{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c79fd6ff-78f1-40d0-9d03-0d7a7aedef3c",
   "metadata": {},
   "outputs": [],
   "source": [
    "options(repos = c(CRAN = \"https://mirrors.aliyun.com/CRAN/\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e8b61dea-cf08-48ef-9d8f-66bfc9178715",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"multcomp\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "041ea884-060b-4688-8473-fbd5b17b9496",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading required package: mvtnorm\n",
      "\n",
      "Loading required package: survival\n",
      "\n",
      "Loading required package: TH.data\n",
      "\n",
      "Loading required package: MASS\n",
      "\n",
      "\n",
      "Attaching package: 'TH.data'\n",
      "\n",
      "\n",
      "The following object is masked from 'package:MASS':\n",
      "\n",
      "    geyser\n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    trt response\n",
      "1 1time   3.8612\n",
      "2 1time  10.3868\n",
      "3 1time   5.9059\n",
      "4 1time   3.0609\n",
      "5 1time   7.7204\n",
      "6 1time   2.7139\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "\n",
       " 1time 2times 4times  drugD  drugE \n",
       "    10     10     10     10     10 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(multcomp)\n",
    "# cholesterol就是一个dataframe，trt表示治疗的方法，response降低胆固醇的响应变量\n",
    "print(head(cholesterol))\n",
    "table(cholesterol$trt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "2cb5b2c8-ab7b-44a6-856f-f64d6d5c747f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     trt   re_avg\n",
      "1  1time  5.78197\n",
      "2 2times  9.22497\n",
      "3 4times 12.37478\n",
      "4  drugD 15.36117\n",
      "5  drugE 20.94752\n"
     ]
    }
   ],
   "source": [
    "df <- cholesterol\n",
    "print(aggregate(list(re_avg=df$response),by=list(trt=df$trt),FUN=mean))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d93c139e-df28-42d3-8509-0fcc8715b18a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     trt    re_sd\n",
      "1  1time 2.878113\n",
      "2 2times 3.483054\n",
      "3 4times 2.923119\n",
      "4  drugD 3.454636\n",
      "5  drugE 3.345003\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(list(re_sd=df$response),by=list(trt=df$trt),FUN=sd))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "25924f6f-f61d-4547-83f8-859a779941db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "            Df Sum Sq Mean Sq F value   Pr(>F)    \n",
       "trt          4 1351.4   337.8   32.43 9.82e-13 ***\n",
       "Residuals   45  468.8    10.4                     \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit<-aov(response~trt,data=df)\n",
    "summary(fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "efeb2084-c937-44a3-9e7a-14933ca64668",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "32.4301407849829"
      ],
      "text/latex": [
       "32.4301407849829"
      ],
      "text/markdown": [
       "32.4301407849829"
      ],
      "text/plain": [
       "[1] 32.43014"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "(1351.4/4)/(468.8/45)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e3d75f82-882e-4b05-ba4e-5877c1caffaa",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"gplots\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1c479794-b524-4209-a842-677ee65a0480",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Attaching package: 'gplots'\n",
      "\n",
      "\n",
      "The following object is masked from 'package:stats':\n",
      "\n",
      "    lowess\n",
      "\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Plot with title \"mean plot \n",
       " with 95% CI\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(gplots)\n",
    "gplots::plotmeans(df$response~df$trt,xlab=\"treament\",ylab=\"response\",main=\"mean plot \\n with 95% CI\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed61a273-2718-499d-b1fa-cf0f37a4daf4",
   "metadata": {},
   "source": [
    "这TMD是绘制出来的原来是置信区间。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e7253dfa-bfec-4607-86d9-130616423652",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  Tukey multiple comparisons of means\n",
      "    95% family-wise confidence level\n",
      "\n",
      "Fit: aov(formula = response ~ trt, data = df)\n",
      "\n",
      "$trt\n",
      "                  diff        lwr       upr     p adj\n",
      "2times-1time   3.44300 -0.6582817  7.544282 0.1380949\n",
      "4times-1time   6.59281  2.4915283 10.694092 0.0003542\n",
      "drugD-1time    9.57920  5.4779183 13.680482 0.0000003\n",
      "drugE-1time   15.16555 11.0642683 19.266832 0.0000000\n",
      "4times-2times  3.14981 -0.9514717  7.251092 0.2050382\n",
      "drugD-2times   6.13620  2.0349183 10.237482 0.0009611\n",
      "drugE-2times  11.72255  7.6212683 15.823832 0.0000000\n",
      "drugD-4times   2.98639 -1.1148917  7.087672 0.2512446\n",
      "drugE-4times   8.57274  4.4714583 12.674022 0.0000037\n",
      "drugE-drugD    5.58635  1.4850683  9.687632 0.0030633\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(TukeyHSD(fit))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "5f3d5111-35d2-4d69-9eed-3dd3d4792d02",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAEQCEACRAARAJAABEAlAAEQCEACRAARAJAABEAlAAEQCEACRAARAJAABEAlAAEQCEACRAARA\nJAABEAlAAEQCEACRAARAJAABEAlAAEQCEACRAARAJAABEAlAAEQCEACRAARAJAABEAlAAERS\np/3/dMfnql1oHqqTMefuUbSiHUt6tIv/6nJ/Q76w8w+ASOr0/8v7qKy7/pc2S5fuUbSiHUt6\ntIv36mJ/11iskccCkdRpu1yZmGRcUw6Ph0RAJO/VTXaVs/1YIJI6fdeJTT5Zc+AuJSLS8q4H\nftVvgUjq9F0nNye3YDya1Vlsoqzdr4pNOl1TpiZqT5DOkUna7/hhc50nxiT5pCI/0q27uOVz\nP2Tx4s3pV3SeVzQ2uduzMrFbGZtq0rb7BrjNcVb3p7N9YaZtmX153vrfApHU6TuO65B3IrVd\nK3H7pa6z+2si0w01EjfKsvMV4+asLSPzK/Ii3bqLXc5d/jyJX9r4uV5K+Xsm7iyttE/9tt03\noG2l3bwokn15iARbGTpO252GNe13ukmqukrsWZ+xT+/XZNa/q312sp3e2xyZm90S15Py+0i/\nzi23j9Gs9KuNm3op5e95dYZdmmeT9H0Dria61bfIlnt/ate9vN/UCJF24E+RUnu+1BysUrtc\n1Etr2uNWYddFs835XUVjpF/XLpdDQUPca919alqRVSWerTP3DUjdcj4csSZvQPfyEAk28qdI\n3klet9/dGm/bdHNznpTebtOK5vMY/nK7fRyd1WV+SeYNqhf2PDUelvZwOGvbUgPqyWu8awMi\nwVb6rlO2g4daTKT6Ykc20WSa+RWRkuHZA5GK5tzubA8o87YtNKBGJNCh7zrX9ju9nok032+x\nB87N6MnP8XyMNN3pXqQhezJxlpd/iDRWE8X2v6XW3jVg9YUhErxH33Xi9ju9nvSsdBxmdPvd\nrbGPiTdGmt1js9T910Wal74ukl/R2WRuwuG+tZNn/RgprREJxOnGI8k4Bvd6lpvoqrN++L60\nxj5mdsrrbA9p3ua4nXZ76Yg0Kb2ob+tjJG9Pq5ubZpi1bd6A1Vm7svZEOuz9HG+BSOr044rx\nXju/3ybDtr7rzdeM4xl3HWncfG3LLcaKHovkxc9myC+mxj2tMslC2+YNGK8jTUSKjT2Udiva\nhd8DkdRpe1ty6RbqWb/Nmq518r6y79a0j3aGrJxubm8sKLyKnhDJi59sOp8e+vzUuGejTL7U\ntlkDms1Re2fDRKQi9kRqF34PRAIQAJEABEAkAAEQCUAARAIQAJEABEAkAAEQCUAARAIQAJEA\nBEAkAAEQCUAARAIQAJEABEAkAAEQCUAARAIQAJEABEAkAAEQCUAARAIQAJEABEAkAAEQCUAA\nRAIQAJEABEAkAAEQCUCA/wE8wf17LU8CmAAAAABJRU5ErkJggg==",
      "text/plain": [
       "Plot with title \"95% family-wise confidence level\n",
       "\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(las=2)\n",
    "par(mar=c(5,8,5,2))\n",
    "plot(TukeyHSD(fit))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9776ab78-df24-40e0-8cfc-cf485dbe77fa",
   "metadata": {},
   "source": [
    "在 R 语言中，par() 函数用于设置图形参数，其中 mar 参数用于设置图形的边距。mar 参数接受一个长度为 4 的向量，分别表示下（bottom）、左（left）、上（top）、右（right）四个边距的行数。\n",
    "对于 mar = c(5, 8, 5, 2)：\n",
    "- 第一个元素 5 表示底部边距的行数。\n",
    "- 第二个元素 8 表示左边距的行数，这个值比默认值大，意味着在左边会有更多的空间。\n",
    "- 第三个元素 5 表示顶部边距的行数。\n",
    "- 第四个元素 2 表示右边距的行数。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "f95fe82e-c5b4-4643-8842-db540421d156",
   "metadata": {},
   "outputs": [],
   "source": [
    "library(multcomp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "532ca8fa-b213-4797-8049-a70fb4a8ddb0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nWoRU7wCl1zdAi5DqHaD0+gZoEVK9A5Re3wAtQqp3gNLrG6BFSPUOUHp9A7QIqd4BSq9vgBYh\n1TtA6fUN0CKkegcovb4BWioOCeZDSBBASBBASBBASBBASBBASBBASBBASBBASBBASBBASBBA\nSBBASBBASBBASBBASBCglpAOX98Mebz98vrPChiy8iY1+0uZtb/8eqxZbP1r1sKPn+Kweeyr\nghP0+VkSw1US0ulr32zu/5hyR+3vD0xzKbH2l0tzX7PY+g/Zh3FzLj2BkP7NqfnaN5PvolN6\nu9y+Hr4VPIR3qWxCDxmH8e3X8zZty05QRhUhHdK2VEi757qlHqaPVFNIt6+cx8ITlFBFSGl/\n/T6W0vch/fm/99S835977e+/63YycxhrgpS79vGz+W3kkXT++luk1Pqf9s3XI5DSZZN213bY\nv//d78P4ePvyHey1CUqoIqTT9aeQ3m+f3I6bx9G0u//LcZ5WXD63m7f24fEcPTDobTr/M6QJ\n179N8Gn3WHiXWn+rff+7tz8O40vaRK7eY4ISqgjp+nsfPXfg53FzuR0291+b29+Dnx9dtuM8\nrTjcNpu1dpNOtydjcYfSe/r44+/fqde/ba05fZ2l3pdsT3J8/rvnYRx+POdPUOxaQ80h/bp/\ndP76fJduO/jy+WU/3rnZ5a6dgks+PTb6vfLk619vW7+tdnwu3Jpkd1/uOHJI+RMI6b/8ENLf\nn4+2Ey/NNnvtz7OW3ekUt/bmduH9n+tNtv71j13/L4/CX2co4Y/ByxMUIKT/tt28sPZ7E/lS\nytv979sXQgpe/7lO/mF8Dj9RFVKcjJBGWvm82Z5fWvu434Sdo7RfYiyx/nOd/MP44+tKYrkJ\nSlhMSLuRXr04/v779YW1wx7RvJDGW//msfVffx+1v54r/3mOtHmcxhScoITqQvo+wf77YLpf\n2bkeoi82tJ6nZK29SR/RV82eK5VZ/9i+Znb/fzbpcLtImH66ajfGnQ2vTVBGZSFt0u1y708H\n0+P1hPAbvd6eXxGy1v54/O7Yv5MfKxVbf/f7lZqvR+Hw+2Wdr5W/DuM0ykPw+gQlgqospF+b\nfz2Ybq/up7foB7H10OStfb+zIPi5zWONcuu/P+8r+P1/vH19sm8+l2sdxtv32LVfn0BI1Gq0\n+1TrmUBIDJBup2SXXfh1upomeBASA7x/nRateYIHITHEYXv7pth1T3AnJAggJAggJAggJAgg\nJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAggJAgg\nJAggJAggJAggJAggJAggJAggJAggpPoc//UTihFSdTbp3z6hHCFV54+fkFryB3nTIqTqCGmO\nhFSbr5/andJlk3aFfoQ3/yCk2vwO6bOivZDmQkjVeZST0vZy9dRuNoRUne+Qfj0/oTghVec7\npNYnFCek6ghpjoRUHSHNkZCqI6Q5ElJ1UjpfWyGdy07Dg5Cqs0mp+R3S4xOKE1J1fm1aIT0+\noTghQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAh\nQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQQAhQYD/ByAgkIo7aeCtAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(mar=c(5,4,6,2))\n",
    "tuk <- glht(fit,linfct=mcp(trt=\"Tukey\"))\n",
    "plot(cld(tuk,level=0.05),col=\"lightgrey\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2da5bb4c-daac-4877-a971-70f1371a6db6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\t General Linear Hypotheses\n",
      "\n",
      "Multiple Comparisons of Means: Tukey Contrasts\n",
      "\n",
      "\n",
      "Linear Hypotheses:\n",
      "                     Estimate\n",
      "2times - 1time == 0     3.443\n",
      "4times - 1time == 0     6.593\n",
      "drugD - 1time == 0      9.579\n",
      "drugE - 1time == 0     15.166\n",
      "4times - 2times == 0    3.150\n",
      "drugD - 2times == 0     6.136\n",
      "drugE - 2times == 0    11.723\n",
      "drugD - 4times == 0     2.986\n",
      "drugE - 4times == 0     8.573\n",
      "drugE - drugD == 0      5.586\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(tuk)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0101d35-f3da-4fd0-909d-82d105e2dedd",
   "metadata": {},
   "source": [
    "有相同字母的组，说明均值差异不显著"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "70c7a71b-d1ce-490a-ad61-b19f1fb59a24",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       " 1time 2times 4times  drugD  drugE \n",
       "   \"a\"   \"ab\"   \"bc\"    \"c\"    \"d\" "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cld(tuk,level=0.05)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea37cdbd-e2ec-44e7-a1ec-cb7338bc6f5e",
   "metadata": {},
   "source": [
    "单因素方差分析中，假设因变量服从正态分布，各组方差相等，用Q-Q图来检验正态性假设。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ea84f8e8-8159-4e89-8301-a6a603fdc80e",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading required package: carData\n",
      "\n"
     ]
    }
   ],
   "source": [
    "library(car)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "fb18504a-55e8-4a40-96b1-9301dd60a941",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] 19 38\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAhFBMVEX9/v0AAAAAACYAAHwA\nAJoAAKcAALIAAL0AANAAANkAAPAAAP9BQUxMTUxYWGdnaGdoaXt2d4t7e3uCg5mLjIuNjaaW\nl7GZmpmfoLumpqanqMWvsM6xsrG0tNq3t9e7vLu+vt/ExefFxsXLy+7Oz87T09PX2NfX2P3f\n4N/n6Ofu7+79/v3WZJV8AAAALHRSTlP/////////////////////////////////////////\n////////////////AMfWCYwAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAACAASURBVHic7Z0Le+O2\nlmUbutPTMxelqxtFiaMeu504Klsy////G/EhiZT4wOMA3Dza6/tiu8oueQs8KyBBEPiPghAS\nzX/MHYAQDVAkQgSgSIQIQJEIEYAiESIARSJEAIpEiAAUiRABKBIhAlAkQgSgSIQIQJEIEYAi\nESIARSJEAIpEiAAUiRABKBIhAlAkQgSgSIQIQJEIEYAiESIARSJEAIpEiAAUiRABKBIhAlAk\nQgSgSIQIQJEIEYAiESIARSJEAIpEiAAUiRABKBIhAlAkQgSgSIQIQJEIEYAiESIARSJEAIpE\niAAUiRABKBIhAlAkQgSgSIQIQJEIEYAiESIARSJEAIpEiAAUiRABKBIhAlAkQgSgSIQIQJEI\nEYAiESIARSJEAIpEiAAUiRABKBIhAlAkQgSgSIQIQJEIEYAiESIARSJEAIpEiAAUiRABKBIh\nAlAkQgSgSIQIQJEIEYAiESIARSJEAIpEiAAUiRABKBIhAlAkQgSgSIQIQJEIEYAiESIARSJE\nAIpEiAAUiRABKBIhAlAkQgSgSIQIQJEIEYAiESIARSJEAIpEiAAUiRABKBIhAlAkQgSgSIQI\nQJEIEYAiESIARSJEAIpEiAAUiRABKBIhAmQQyQjzU/oFQ0AIgZBhphB21eFtFYI9v461va/v\nX+U5RBJ+vZ/CrxcEQgiEDDOFsF8d3r5CsMXZo96Xp0jZQAiBkGHRIg15RJHygRACIcM8Ie48\nChdp4PUpUjYQQiBkWLBIwx5RpHwghEDIMEuIe4+CRBrxiCLlAyEEQobFijR8gVRQpIwghEDI\nMEeIB48CRDpr9GUHfwNFygZCCIQMCxWp9IgiCb9eEAghEDLMEOLRI2+RKo8okvDrBYEQAiHD\n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\nEiEC/H9vMaEyspGFiwAAAABJRU5ErkJggg==",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(qqPlot(lm(response~trt,data=df)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "d5688e96-3ceb-4783-808e-bcf963d378fa",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] 19 38\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=",
      "text/plain": [
       "Plot with title \"Q-Q Plot\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(qqPlot(lm(response~trt,data=df),simulate=TRUE,main=\"Q-Q Plot\",labels=FALSE))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a372a56-055b-4af4-a660-4c1bf77d8c0d",
   "metadata": {},
   "source": [
    "用bartlett作方差齐次性检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "da755761-d920-4ce9-a235-64196d1c8259",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\tBartlett test of homogeneity of variances\n",
       "\n",
       "data:  response by trt\n",
       "Bartlett's K-squared = 0.57975, df = 4, p-value = 0.9653\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bartlett.test(response~trt,data=df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "93d78905-02ac-4a4b-bfd1-0ff2fc11c67b",
   "metadata": {},
   "source": [
    "同方差性检验对离群值敏感，所以要检查一下是否存在离群值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a12b819f-3b85-47d2-9acb-9e099cc2c812",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "No Studentized residuals with Bonferroni p < 0.05\n",
       "Largest |rstudent|:\n",
       "   rstudent unadjusted p-value Bonferroni p\n",
       "19 2.251149           0.029422           NA"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "outlierTest(fit)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d96fcdc2-794f-41fb-a966-d0e957ef5274",
   "metadata": {},
   "source": [
    "**单因素协方差分析**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "82db8661-e9b5-4a68-8671-0a33d5bf7db5",
   "metadata": {},
   "outputs": [],
   "source": [
    "data(litter,package=\"multcomp\")#litter除了垃圾的另一个解释是用于描述动物生产幼崽的行为。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "507dfcad-237b-4a19-a832-80b58a5cda6a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "  0   5  50 500 \n",
       " 20  19  18  17 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "table(litter$dose)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "2bab55b9-ad16-4848-a339-597d42aa8c31",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  dose weight gesttime number\n",
      "1    0  28.05     22.5     15\n",
      "2    0  33.33     22.5     14\n",
      "3    0  36.37     22.0     14\n",
      "4    0  35.52     22.0     13\n",
      "5    0  36.77     21.5     15\n",
      "6    0  29.60     23.0      5\n"
     ]
    }
   ],
   "source": [
    "print(head(litter))#dose（药物等的）一剂，一服；一次剂量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "400fbc93-ea5c-45c5-84fe-64192d719afb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  dose      avg\n",
      "1    0 32.30850\n",
      "2    5 29.30842\n",
      "3   50 29.86611\n",
      "4  500 29.64647\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(list(avg=litter$weight),by=list(dose=litter$dose),FUN=mean))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "6c341650-f5d1-4fa5-a563-7296c34d32e1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  dose      std\n",
      "1    0 2.695119\n",
      "2    5 5.092352\n",
      "3   50 3.762529\n",
      "4  500 5.404372\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(list(std=litter$weight),by=list(dose=litter$dose),FUN=sd))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "ff55b025-f694-496d-b5ee-00f31e94f883",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            Df Sum Sq Mean Sq F value  Pr(>F)   \n",
      "gesttime     1  134.3  134.30   8.049 0.00597 **\n",
      "dose         3  137.1   45.71   2.739 0.04988 * \n",
      "Residuals   69 1151.3   16.69                   \n",
      "---\n",
      "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n"
     ]
    }
   ],
   "source": [
    "fit <- aov(weight~gesttime+dose,data=litter)\n",
    "print(summary(fit))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "0f1deadb-46ab-40ed-90d8-bd134414ca68",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "20"
      ],
      "text/latex": [
       "20"
      ],
      "text/markdown": [
       "20"
      ],
      "text/plain": [
       "[1] 20"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nrow(litter[litter$dose==0,])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "d80883e9-fc4e-4c86-b65d-0c52be86054f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   dose weight gesttime number\n",
      "1     0  28.05     22.5     15\n",
      "5     0  36.77     21.5     15\n",
      "8     0  33.67     22.5     15\n",
      "10    0  32.78     21.5     15\n",
      "12    0  33.40     22.5     15\n",
      "15    0  33.38     22.0     15\n",
      "18    0  33.08     22.0     15\n",
      "21    5  34.83     22.5     15\n",
      "23    5  24.28     22.5     15\n",
      "28    5  33.20     22.5     15\n",
      "43   50  33.13     22.5     15\n",
      "44   50  30.60     22.5     15\n",
      "45   50  30.17     21.5     15\n",
      "62  500  30.32     22.0     15\n",
      "67  500  32.88     22.5     15\n"
     ]
    }
   ],
   "source": [
    "print(litter[litter$number==15,])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "c0fceb8c-688f-4233-9f4f-1b905ad42435",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     \n",
       "      5 7 9 10 11 12 13 14 15 16 17\n",
       "  0   1 1 1  0  0  1  2  4  7  3  0\n",
       "  5   0 1 2  0  0  3  4  3  3  2  1\n",
       "  50  0 0 0  0  0  2  1  6  3  4  2\n",
       "  500 0 1 1  1  3  2  3  2  2  1  1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "table(litter$dose,litter$number)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "b7d27a48-9ab5-4c77-ae47-bfda0ceae1f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "            Df Sum Sq Mean Sq F value  Pr(>F)   \n",
       "gesttime     1  134.3  134.30   8.049 0.00597 **\n",
       "dose         3  137.1   45.71   2.739 0.04988 * \n",
       "Residuals   69 1151.3   16.69                   \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit <- aov(weight~gesttime+dose,data=litter)\n",
    "summary(fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "ed3cf519-19de-4c73-9c07-7429684f25a5",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "lattice theme set by effectsTheme()\n",
      "See ?effectsTheme for details.\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "\n",
       " dose effect\n",
       "dose\n",
       "       0        5       50      500 \n",
       "32.35367 28.87672 30.56614 29.33460 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(effects)\n",
    "effect(\"dose\",fit)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f2eb5a87-cca2-4771-901a-dea740cfe21d",
   "metadata": {},
   "source": [
    "`glht`函数用于对线性模型进行多个对比和假设检验，包括但不限于线性回归、方差分析等线性模型。它提供了一种灵活的方式来检验用户自定义的线性假设，而不是仅仅局限于预定义的对比。参数如下：\n",
    "- model：是一个线性模型对象，如 lm、glm 等拟合的对象。\n",
    "- linfct：是一个线性假设的描述，可以使用 mcp 函数或自定义的矩阵。\n",
    "- alternative：指定备择假设的类型，有 \"two.sided\"（双侧检验）、\"less\"（左侧检验）、\"greater\"（右侧检验）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "d57f8df2-7344-4daa-86d4-511e9e22403c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                 [,1] [,2] [,3] [,4]\n",
      "no drug vs. drug    3   -1   -1   -1\n"
     ]
    }
   ],
   "source": [
    "contrast <- rbind(\"no drug vs. drug\" = c(3,-1,-1,-1))\n",
    "print(contrast)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "4ca55234-4483-4fa3-9cfb-af5efdcd91eb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "$dose\n",
      "                 [,1] [,2] [,3] [,4]\n",
      "no drug vs. drug    3   -1   -1   -1\n",
      "\n",
      "attr(,\"interaction_average\")\n",
      "[1] FALSE\n",
      "attr(,\"covariate_average\")\n",
      "[1] FALSE\n",
      "attr(,\"class\")\n",
      "[1] \"mcp\"\n"
     ]
    }
   ],
   "source": [
    "print(mcp(dose=contrast))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "8ff51e4a-29e4-42b5-a828-2fcf238edff9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\t Simultaneous Tests for General Linear Hypotheses\n",
       "\n",
       "Multiple Comparisons of Means: User-defined Contrasts\n",
       "\n",
       "\n",
       "Fit: aov(formula = weight ~ gesttime + dose, data = litter)\n",
       "\n",
       "Linear Hypotheses:\n",
       "                      Estimate Std. Error t value Pr(>|t|)  \n",
       "no drug vs. drug == 0    8.284      3.209   2.581    0.012 *\n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n",
       "(Adjusted p values reported -- single-step method)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "summary(glht(fit,linfct=mcp(dose=contrast)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "be581a00-9e32-4b8a-aba6-e75261ed96b3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "\t Simultaneous Tests for General Linear Hypotheses\n",
       "\n",
       "Multiple Comparisons of Means: User-defined Contrasts\n",
       "\n",
       "\n",
       "Fit: aov(formula = weight ~ gesttime + dose, data = litter)\n",
       "\n",
       "Linear Hypotheses:\n",
       "                          Estimate Std. Error t value Pr(>|t|)\n",
       "drug 50 vs. drug 500 == 0   -1.232      1.419  -0.868    0.389\n",
       "(Adjusted p values reported -- single-step method)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data(litter,package=\"multcomp\")\n",
    "fit <- aov(weight~gesttime+dose,data=litter)\n",
    "contrast <- rbind(\"drug 50 vs. drug 500\" = c(0,0,-1,1))\n",
    "summary(glht(fit,linfct=mcp(dose=contrast)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c4e5ef0-288f-4824-88c8-122fdc89b55b",
   "metadata": {},
   "source": [
    "ANCOVA需要满足正态性和同方差性以及回归斜率相等的假设。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "84db399e-ef5b-4da2-827a-da36af9ab2e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "              Df Sum Sq Mean Sq F value  Pr(>F)   \n",
       "gesttime       1  134.3  134.30   8.289 0.00537 **\n",
       "dose           3  137.1   45.71   2.821 0.04556 * \n",
       "gesttime:dose  3   81.9   27.29   1.684 0.17889   \n",
       "Residuals     66 1069.4   16.20                   \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit2 <- aov(weight ~ gesttime*dose,data=litter)\n",
    "summary(fit2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "d0ba73d2-ee3f-4212-a916-9e641bacc2b4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "              Df Sum Sq Mean Sq F value  Pr(>F)   \n",
       "gesttime       1  134.3  134.30   8.289 0.00537 **\n",
       "dose           3  137.1   45.71   2.821 0.04556 * \n",
       "gesttime:dose  3   81.9   27.29   1.684 0.17889   \n",
       "Residuals     66 1069.4   16.20                   \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit2 <- aov(weight ~ (gesttime+dose)^2,data=litter)\n",
    "summary(fit2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "63fb87f9-301d-4007-bf13-3c5bb6c7bd04",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "package 'HH' successfully unpacked and MD5 sums checked\n",
      "\n",
      "The downloaded binary packages are in\n",
      "\tC:\\Users\\xie.xiaokang\\AppData\\Local\\Temp\\RtmpyAxAcM\\downloaded_packages\n"
     ]
    }
   ],
   "source": [
    "install.packages(\"HH\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "3719a4bf-56b4-4a41-9e0e-2f5bd4c0f25d",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading required package: lattice\n",
      "\n",
      "Loading required package: grid\n",
      "\n",
      "Loading required package: latticeExtra\n",
      "\n",
      "Loading required package: gridExtra\n",
      "\n",
      "\n",
      "Attaching package: 'HH'\n",
      "\n",
      "\n",
      "The following objects are masked from 'package:car':\n",
      "\n",
      "    logit, vif\n",
      "\n",
      "\n",
      "The following object is masked from 'package:gplots':\n",
      "\n",
      "    residplot\n",
      "\n",
      "\n",
      "The following object is masked from 'package:base':\n",
      "\n",
      "    is.R\n",
      "\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Analysis of Variance Table\n",
       "\n",
       "Response: weight\n",
       "          Df  Sum Sq Mean Sq F value   Pr(>F)   \n",
       "gesttime   1  134.30 134.304  8.0493 0.005971 **\n",
       "dose       3  137.12  45.708  2.7394 0.049883 * \n",
       "Residuals 69 1151.27  16.685                    \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAZlBMVEUAAAAAcrIAnnNJSUlN\nTU1jY2NoaGh1dXV8fHyFhYWMjIySkpKampqenp6np6epqamysrKzs7O9vb3FxcXHx8fOzs7Q\n0NDVXgDV1dXZ2dnd3d3h4eHk5OTmnwDp6enw8PDy8vL///+JKIXsAAAACXBIWXMAABJ0AAAS\ndAHeZh94AAAgAElEQVR4nO2di3ajuLqEIe3JZGdnsnsymWT69CRpv/9LHgMGCyNAl/8muWqt\nGMcGlQrxGSEwbo4QBGWr0a4ABNUggARBBAJIEEQggARBBAJIEEQggARBBAJIEEQggARBBAJI\nEEQggARBBAJIKWoa33pbvPpE6fk0m/prkCjSwm5UWIMpCgLpx4Fw5Y6FjVOAZExYgykKAoll\nW7+ekhYOpQtrkE6SIJEKIOULa3Cp+6b5cZp8nbavr9P0s2nuu3+fD83h+bOfY9zyPp+a5uFl\n/Leb/HhomqfP4Z8mYAOdlzAz+fp+Kqt5fHUKuxTqWL7cN/en+r4cmocfx0UpF3lq8/l0aO4v\n7se3U22ap7fjtf9qmdAogLTU96Z5Pk3eTptRtxW9Ns330zZ3GDbifls9b3k/hpceLlv1c//C\n4TMUpKsSXJPxefOwDdJD/9Ln86V2s6petKzNlfvx4Vz+o1tK579aJjQKIC113gX1n87HfvM6\ngTFuVodujvOWN7522arPevKA1O04Xvpnb5cXr0pwTZ56jL9O7i+bIJ2XcBCYVfWiJUhX7o/T\nf49X/qtlQqMAkkf3fZ/uss2esHo5fTJ/Hb+Greu8TZ52VYcTFK+Hy1Z9OH1iP89pO+u8r3o5\n9ZguL1+VMDNpen67Dua9U9jVtOmXOC3X3P/sJ9elOFqAdHZ/O7t3e+CXr65+TfN25b9WJjQK\nIHn0vdtefpy7Mm99z+5xOF46Dp/Ww5b32G9w/QY5btXd/1+Xf50yG0fTi1clzEy6zfvpzVnc\nN22GztZlcl3K0v1SpdH9bXj1adj39Mw/Xfn7yoRcASSPPrst6bQ5vXYHS8/9J/NlQ+z2NsOW\ndxi3yity/CCdNtK34SDkeXrxqoSZyffh2XlbXgdpMZlXdSp/CVKzcP8a4zdX/r4yIVcAyaf7\n0/bS/R1O3ZrDiI6zJbqPxzCQBh5OKN07h0jLTdkxeR433c9l2WEgNa5RCEizN1x/7/KQI6wX\n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\nIAIBJAgi0P8D5JOApfMRBDAAAAAASUVORK5CYII=",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(HH)\n",
    "ancova(weight~gesttime+dose,data=litter)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "46f2f6ae-ce82-49f4-9950-452d9a949cd2",
   "metadata": {},
   "source": [
    "ANCOVA 模型本质上是在控制协变量的影响下，比较不同组的因变量均值是否有差异。如果组间回归斜率不同，那么在控制协变量的同时，不能简单地将不同组放在同一水平上进行比较，因为协变量对不同组的影响方式不同。\n",
    "\n",
    "例如，假设我们在研究不同教学方法（分组变量）对学生成绩（因变量）的影响，同时考虑学生的入学成绩（协变量）。如果组间回归斜率不同，说明不同教学方法下，入学成绩对最终成绩的影响不同，此时直接比较不同组的成绩就不合理，因为不同组的起始条件（入学成绩）对最终结果的影响模式不一致。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "fa8fd434-7323-4d3e-a419-b4de86d50191",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "    \n",
       "     0.5  1  2\n",
       "  OJ  10 10 10\n",
       "  VC  10 10 10"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tg <- ToothGrowth\n",
    "table(tg$supp,tg$dose)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "5f9bf8c5-58c8-4e18-83b7-5e5b3239eaa9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   len supp dose\n",
      "1  4.2   VC  0.5\n",
      "2 11.5   VC  0.5\n",
      "3  7.3   VC  0.5\n",
      "4  5.8   VC  0.5\n",
      "5  6.4   VC  0.5\n",
      "6 10.0   VC  0.5\n"
     ]
    }
   ],
   "source": [
    "print(head(tg))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "57400aa4-e406-4c69-afab-d62ca673daa2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  supp dose len_avg\n",
      "1   OJ  0.5   13.23\n",
      "2   VC  0.5    7.98\n",
      "3   OJ  1.0   22.70\n",
      "4   VC  1.0   16.77\n",
      "5   OJ  2.0   26.06\n",
      "6   VC  2.0   26.14\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(list(len_avg = tg$len),by=list(supp=tg$supp, dose=tg$dose),FUN=mean))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "5bef55d5-8b49-40dc-bf2f-5095a5e0f4f3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  supp dose  len_avg\n",
      "1   OJ  0.5 4.459709\n",
      "2   VC  0.5 2.746634\n",
      "3   OJ  1.0 3.910953\n",
      "4   VC  1.0 2.515309\n",
      "5   OJ  2.0 2.655058\n",
      "6   VC  2.0 4.797731\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(list(len_avg = tg$len),by=list(supp=tg$supp, dose=tg$dose),FUN=sd))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "143e880d-30d9-4b6e-8442-518b3f28a2bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "            Df Sum Sq Mean Sq F value   Pr(>F)    \n",
       "supp         1  205.4   205.4  12.317 0.000894 ***\n",
       "dose         1 2224.3  2224.3 133.415  < 2e-16 ***\n",
       "supp:dose    1   88.9    88.9   5.333 0.024631 *  \n",
       "Residuals   56  933.6    16.7                     \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit <- aov(len~supp*dose,data=tg)\n",
    "summary(fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "b97d9084-0c92-4999-8b0f-9a8b89b812d3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "                  Df Sum Sq Mean Sq F value   Pr(>F)    \n",
       "supp               1  205.4   205.4  15.572 0.000231 ***\n",
       "factor(dose)       2 2426.4  1213.2  92.000  < 2e-16 ***\n",
       "supp:factor(dose)  2  108.3    54.2   4.107 0.021860 *  \n",
       "Residuals         54  712.1    13.2                     \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit <- aov(len~supp*factor(dose),data=tg)\n",
    "summary(fit)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0f3d02a-47ed-4288-8e8f-00a8ea5f7572",
   "metadata": {},
   "source": [
    "#### 为什么要把 `dose` 转换成因子\n",
    "- **方差分析的假设**：\n",
    "    - 在方差分析中，自变量通常是分类变量或分组变量，因为方差分析是用来比较不同组之间的均值差异。如果 `dose` 是数值型变量，将其直接用于方差分析可能会导致错误的结果，因为 `aov` 函数会将其视为连续变量，并尝试建立线性关系，而不是组间比较。\n",
    "    - 将 `dose` 转换为因子变量，可以将不同的剂量水平视为不同的组，这样 `aov` 函数会将其视为分组变量，对不同剂量组的因变量 `len` 的均值进行比较。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "a1c87927-489a-4021-b68d-ec28aae6929d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\ngtzxlTePWgAAAABJRU5ErkJggg==",
      "text/plain": [
       "Plot with title \"Interaction between dose and supplement type\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "interaction.plot(tg$dose,tg$supp,tg$len,type=\"b\",col=c(\"red\",\"blue\"),pch=c(16,18),\n",
    "                 main=\"Interaction between dose and supplement type\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "638321df-c8d6-431a-835c-c02793db0ae9",
   "metadata": {},
   "source": [
    "1. **理解`interaction.plot`函数的基本图形结构**\n",
    "   - `interaction.plot`函数在R语言中用于绘制交互作用图。该图的横轴通常代表一个自变量（因子），纵轴代表因变量的均值或其他汇总统计量。不同的线条代表另一个自变量（因子）的不同水平。\n",
    "   - 例如，假设有一个研究药物（变量A，有两个水平：药物A和药物B）和运动强度（变量B，有三个水平：低强度、中强度、高强度）对减肥效果（因变量）的实验。在交互作用图中，横轴可能是运动强度，纵轴是减肥效果的均值，有两条线分别代表药物A和药物B。\n",
    "\n",
    "2. **判断交互作用是否存在的方法**\n",
    "   - **平行线条**：\n",
    "     - 如果代表不同因子水平的线条是平行的（或近似平行），这通常表明两个因子之间没有显著的交互作用。例如，药物A和药物B对应的两条线在不同运动强度下几乎平行，意味着药物和运动强度之间的联合作用不显著，减肥效果可以看作是药物效应和运动强度效应的简单相加。\n",
    "   - **不平行线条**：\n",
    "     - 当线条不平行时，可能存在交互作用。例如，如果药物A对应的线在低运动强度时减肥效果低于药物B，但在高运动强度时高于药物B，这表明药物和运动强度之间存在交互作用。在这种情况下，不能简单地分别讨论药物和运动强度对减肥效果的单独影响，而需要考虑它们的联合作用。\n",
    "   - **交叉线条**：\n",
    "     - 交叉线条是一种特殊的不平行情况，这是比较明显的交互作用迹象。例如，在某个剂量水平下，一种药物的效果优于另一种药物，但在另一个剂量水平下，情况相反。这意味着两个因素的联合作用对结果产生了复杂的影响，具体效果取决于两个因素的组合方式。\n",
    "\n",
    "3. **结合统计检验进行综合判断**\n",
    "   - 虽然交互作用图可以提供直观的视觉线索，但不能仅凭图形就确定交互作用是否显著。在R语言中，通常在使用`interaction.plot`之前或之后，会使用方差分析（如`aov`函数）等方法进行统计检验。\n",
    "   - 例如，在进行双因素方差分析后，查看交互作用项的F值和p - value。如果p - value小于设定的显著性水平（如0.05），并且交互作用图也显示出不平行的线条，那么可以更有信心地认为存在显著的交互作用。\n",
    "\n",
    "4. **示例代码及结果解释（以`ToothGrowth`数据集为例）**\n",
    "   - 以下是使用`ToothGrowth`数据集绘制交互作用图的代码：\n",
    "```r\n",
    "data(ToothGrowth)\n",
    "ToothGrowth$dose <- factor(ToothGrowth$dose)\n",
    "interaction.plot(x.factor = ToothGrowth$dose, \n",
    "                  trace.factor = ToothGrowth$supp, \n",
    "                  response = ToothGrowth$len,\n",
    "                  fun = mean,\n",
    "                  type = \"b\",\n",
    "                  legend = TRUE)\n",
    "```\n",
    "   - 在这个例子中，`x.factor`是剂量（`dose`），`trace.factor`是补充剂类型（`supp`），`response`是牙齿长度（`len`）。`fun = mean`表示计算牙齿长度的均值。\n",
    "   - **结果解释**：\n",
    "     - 如果从图中看到代表不同补充剂类型的线条在不同剂量水平下不平行，再结合方差分析中`supp:dose`交互项的p - value（通过`aov`函数计算）来综合判断。如果p - value较小且线条不平行，就可以推断补充剂类型和剂量之间存在交互作用，即补充剂对牙齿生长的影响因剂量不同而不同。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "3ae4f4bb-82fc-4bab-9d23-7a97dcca54cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "library(gplots)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "d75ba8c4-c7a4-4df4-a460-71bfcf6ae3a4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\no/f0hIQEw5wYUuw3doSB9FIBVzoxpEh5z0926/vyVDQ1KSHBMCeG5KlPdfujvKlJCQmGOTGk\n1oGN6aMchATDsEcCBJz7HOn1zW7xHAm2OfPwd9A4aufHwksFXOnc80hRdh7JC++cR4JduLIB\nEKBPSDsvXAKudEFID0/5j+lJCAmGOTOkT6i8R3LnEiHY58SQPllBkbrFyTdUk/skQoJhTgzp\nlp47ivIzsbHypyYlJBjm9EuEVNj4x+ikG4cALnJ6SM/8MR2XCMEqpz60u5WXM8Q3LhGCVc78\nxT6vejynpndIhATTnHoeKSrz8Sb3R4QE4+hzZUMTIcEwhAS3/NcjMltCgptk+qkQEtxESIAA\nQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAA\nQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAA\nQgIEEBIggJAAAYQE+/zXc/yQsrMjJGjk+H6OGoqQoBFCkkVIjiIkWYTkKEKSRUiOIiRZhOQo\nQpJFSI4iJFmE5ChCkkVIjiIkWYTkKEKSRUiOIiRZhOQoQpJFSI4iJFmE5ChCkkVIjiIkWYTk\nKEKSRUiOIiRZhOQoQpJFSI4iJFmE5ChCkkVIjiIkWYTkKEKSRUiOIiRZhOQoQpJFSI4iJFmE\n5ChCkkVIjiIkWYTkKEKSRUiOIiRZhOQoQpJFSI46MSRhhASNEJIsQoJhCAkQQEiAAEICBBAS\nIICQAAGEBAggJDjp7+9PdH6EBAdlFYmmREjQx79//84Z6K/xUQYhQRdZRaek9Nf5WwAhQRf/\nGh+P9df4I4SQoIl/nb8P9Fc0REiwz7/ywd0JY/1Jd0RI0EV5pOG0kDhqB/v8O7UjziPBRv/q\nA3ZnHLWTTShHSLha3c4555GO6IiQcK3TzsFWDumIkHCl0ytKCAm2OX9nlDqmI0LCNa6p6LCO\nCAlXuKii4zoiJJzuqp1RcmBHhISTXVfRkR0REs504c4oObQjQsJprq2o2xEvou+4/3quXqJl\nLq6otz8iJGQM6Se3dGd04Ep1H9cZH9LDVyp8TU9DSPMMCmn5zui4leo9PzI3JJWNFahMND3p\nxiFcYkpIq54ZHbZS/eMMhocUqShOkm+kHsJL5RwjQlp7fOGolRo4Xmd4SJ6K09ux8icn3TiE\n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\npLmVkhtrDS1Dqn/q/LbkR3Gr9d+SfvcaO4dHNdU6QfHf/07fAzsqG4nDam5iI9XmVi75fV1o\nI5hdPbGxZldq7DPrza+U3FgraBlSqD7lzXe1DTe+Mar7MydUr9uWN7J+pkHgRQAABqNJREFU\nFT/Hbul/TlCPKj9SbW7lko/YRjC7emJjza5UJk63/b3mV0purBW0DKn181n1PzmweWfWf+u8\nxpwm3nFeYKTuLNu3O2NL/TSdWz2xsZasVLo77x4y3GLJSkmNtZwdISn1TI+/rn/YFaV3/D0H\nipKFIW0eqTvL9u2DQppbPbGxFoX09XYfqEktWSmpsZazI6Rc3DhMvdAn27fkDxAWhbR5pO4s\n27cPCmlu9cTGWrJSsSfzYGvJSkmNtZyWITUe+X6GHnF7w5v3lm3CV3GZRf04/1WdghAcqTS3\ncjtn3zazemJjLVmpYPsPn7YFKyU21mJahtQ6BnQvDmj2jtp9e6d0NmwT6eHse/5A7V4eAWqc\nPRccqTS3cjtn3zazemJjza/U1w++/fttMrtSgmMtpmVI3bMSSsWt/5Z79uVX/Z/npRMMbO9L\nhvKzn3DZ3YtzEkH9DEhwpHrE6ZVLiYU0s3piY82u1EvwINrcSkmOtZiWITXPk6dPLMPfhnxv\nbLu96w2yk9xxtOVAzU2Vx1N/N9Oz5N+wOuUnO1JpZuVScudApldPbqyZlfqKbtvTKyU71lJ6\nhpT+v+TS/5Xf5px611/262PQ2XYQe9kntpzeeTUuDwv6120JjtQacmLlEsmQZlZPbqzplbqV\nXxUba3ylZMdaStOQkvieXkt8L55BvnzlNze1OLsmO7uZf7/ST/jbDkl7jR9mz/AXzbO1HIIj\n1TOdXLlEMqSZ1RMca3KllOzGPblSwmMtpGtIgFEICRBASIAAQgIEEBIggJAAAYQECCAkQAAh\nAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAh\nAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQIIaSHVMDPpiveXXThpY8jinR6jePkgP5+b\np26zg7WGGZvoNf1lVxHSQstD8pdvZEsn7YWkynfzXiYafPfY6WFGpskXmZC6CGmNRdvPio1s\n6aS9LfwbrHnr7nv21t/xfa6+JYtDQsMIaQ1tQkr3DIsfQX7LgG7qtntxCGkYIa1RbkVKxb4K\nfzcevvLytzh/hSp/+/Piwd/vz28PcM8eVuXvil5Nq9Q3zL7UfpxYzaGe4CfyfncfCOmVR/Gb\nafEe669AqeDVHikXqXxWSRw+WvfpLuPv31G1CK3FGFi79ozqBXYUIa1RhxRmm16YbVfpg6x7\n/iwkamxq2afSzTvfSutpf9tkevPeDqmeQz1BkmR3DwdCipVffjmb6SO/+6M1Ui5Qn+ZKBI0F\naS9jNlL5peZiDKxdZ0bVAruKkNaoQwrSo2av9K84SB9kKfVMkmf2daWqSR7FR68zbfZJv/04\nqTWHcoKn8j7Jxxs6CpDeKL/8u6eX1vJM79MYqXOXTOM+3WVUzS+1l7O3dkMz8uW/48YgpDXq\nkN7pX6FKc4qzB3n118tN7Z19/BafaUxbfmnoCUcxh3d1r/TWayykMKvlle4VVBXO8FJVWvdp\nL6MqvhSW/3y37t0JaWBGy7+T1iGkNeqQir8ax8O/r3vQ2dSaHxvTNj/ZnPvAHKqBeovQ/fLv\naU74+fSWqnPvpHWf/jK2vtT88vSyNad0FCGtMRFSUN3aGtLQHMZD+uZ7gvpzd684u9QLKaye\nI73ijSHNLBshEdIqvZCqr9yU/3h9J0PqzKUb0uAcxkN65k/9m597RX73iVfmXh4FeDe+vCqk\nuWUjJEJapRNS2HlCPxVSd9peSINzyO/1HgjJT5+WhPWTmvqrYfcMU3UeKUgP6oXtJ0LtxXkn\nredIreUcXrbejBxFSGt0QsqOWyWP8gDCp3wW8U36G2lr2vKT+aTlPBtzKCd4jRy1K65saBw4\n8/MDa35rpMItu7IhPdWTdA62tZexPGr36oc0sHYjM3IUIa3RCal46pD+vC+uZkt/pPsqP5Rc\nT9h4mpE/iSk/mU+aa8yhca/sxM6tFZKqZtQ8lfOs7t0YqVQ8xfE79+mHdEu/FCbdkIbXbnhG\njiKkNbohpef21S3bPH+bYPDOHue8/cGQ6mnrT+aTFuo5NO91713ZkG295bnPh9e6suHdWarS\n8xdk8OzeZ+A5UlRcoNB55jO8doMzchQhAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQII\nCRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQIICRBASIAAQgIEEBIggJAAAYQECCAkQAAhAQII\nCRBASIAAQgIEEBIggJAAAYQECPg/1Fut42l7jpYAAAAASUVORK5CYII=",
      "text/plain": [
       "Plot with title \"Interaction Plot whit 95% CIs\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotmeans(tg$len~interaction(tg$supp,tg$dose,sep=\" \"),col=c(\"darkred\",\"skyblue\"),connect=list(c(1,3,5),c(2,4,6)),\n",
    "          main=\"Interaction Plot whit 95% CIs\",xlab=\"Treatment and Dose Combination\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5687c73e-2069-4278-beb2-f0132472cf55",
   "metadata": {},
   "source": [
    "`connect`参数的用法：\n",
    "\n",
    "**第一种类型：逻辑值（logical value）**\n",
    "\n",
    "当这个参数取值为逻辑值时，它用于指示是否应该用线条将每个组（group）的均值（means）连接起来。\n",
    "如果这个参数设置为TRUE（这也是默认值，Defaults to TRUE），那么在生成的图形（可能是柱状图或者其他展示组均值的图形）中，会用线条将每个组的均值依次连接起来。这样可以更直观地展示组均值之间的变化趋势。\n",
    "例如，在绘制不同班级学生成绩的均值柱状图时，如果这个参数为TRUE，就会有线条连接各个班级成绩均值的点，帮助用户观察成绩均值是如何随着班级变化而变化的。\n",
    "相反，如果设置为FALSE，就不会有这些连接均值的线条，图形只会展示各个组均值对应的柱状或者其他形状，这样可能会更突出每个组均值的独立情况。\n",
    "\n",
    "**第二种类型：向量列表（a list of vectors）**\n",
    "\n",
    "当这个参数是一个向量列表时，它的作用是指定哪些条形（bars，可能是柱状图中的柱子）的索引（index）应该用线条连接起来。\n",
    "例如，假设有一个柱状图展示了一周内每天不同产品的销售额。这个参数可以是一个列表，其中的向量可能包含像c(1,3,5)这样的索引，表示要将第一天、第三天和第五天对应的产品销售额柱子用线条连接起来，这样就可以只关注特定几天之间的联系，而不是像逻辑值为TRUE时那样连接所有相邻的组均值。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "1278f27c-2f92-4504-ab16-8442c9a1f6e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAgVBMVEUAAAAAcrIAnnMXFxcq\nKio8PDxJSUlNTU1dXV1jY2NoaGhtbW11dXV8fHyFhYWMjIySkpKampqbm5uenp6np6epqamq\nqqqysrKzs7O4uLi9vb3FxcXGxsbHx8fOzs7Q0NDV1dXZ2dnd3d3h4eHi4uLk5OTmnwDp6enw\n8PDy8vL////Y0TylAAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO2dC3vTuBJAxW1p\nKNAWFpZXYSlsWaj//w+8sZ04fijTsaOxNe453y7xQ5HGY53Ylp0mFABwMmHpAADWACIBJACR\nABKASAAJQCSABCASQAIQCSABiASQAEQCSAAiASQAkQASgEgACUAkgAQgEkACEAkgAYgEkABE\nAkgAIgEkAJEAEoBIAAlAJIAEIBJAAhAJIAGIBJAARAJIACIBJACRABKASAAJQCSABCASQAIQ\nCSABiASQAEQCSAAiASQAkQASgEgACUAkgAQgEkACEAkgAYgEkABEAkgAIgEkAJEAEoBIAAlA\nJIAEIBJAAhAJIAGIBJAARAJIACIBJACRABKASAAJQCSABCASQAIQCSABiASQAEQCSAAiASRg\nTSKFNW0M+MJh33sbX/xxE8LLL9VkSK/UiCrLQN62XgUeWT0upt/vtw3efD+pyki1DVODfSvW\nuhbcbd2PTTzkq1DxvpxeVKSPZRhvD6/HObYp02L6HloZSFftnqnB7t+HSJlxZId82XWj8O/x\nMgbNRnhZx9C8pqhT8f4/+wSELydVeiysqcHu34dImXFkh2y77bfqv7fHy8yDvuckFWl7ALz6\nt/jzdnt+e1KlqsZmeJ83nG3l7kO3nPy97TNXX/Y7qnyp/tsUh533Z3vVsHn/e//O4vv2/O/t\nv81sp9riy8vw8sf20LYJVz/qpd9utstf1u9vNdOqZU+/oU4L7ZXbma3yV987m/LnY3leevOt\nU2W/8Xarv99uysvBzjZsV//ob9jLell5sPpTvq2W7FBzna2STetdsU1t5b23rb9fVieT7XCj\nG9nE9f1tecr7/dBWa8uimfCBW5F+1FNXux20qUVqSpUvvzd1mX0He384+RuKVF9j/X5/eMfV\n/lzpR9HuXe1adrQa2gd4CLQTxX7mfWtT9svCVavKfuPtVnubXnNzMzwQfqyvmMqrp7Jvbo/X\n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\nmTzaV9LUK/aVmEj2uamXXh8KVHUetqzV0JLJscW3SLsE34aLu4e7i2rmTblD/tmvuw2vfz1s\nT7hvy9nt5Kdw2bz33e6j81ZT2UW4e3j4Ur67vU/rkl86k4O+krZesa9ETu1myM2Xw9Ivh3gP\nW9ZqaMnk2LIKka6rfXRbz9y9Kz8ed+uuQzmM+qucD+Gfzi6sPiYv77Y7SlfZbadUvU/rkted\nyWN9JVG9Yl+JiDRDbq6rd9/WddYFXre3rNXQksmxZRUi7fbLfveE28v96UDY0ytalXq4q08o\nNJVt9+313V1/nz5EJo/1lUT1in0lItIMuYnH296ypqElk2PLKkXafvpdPtpZqg+7L5eD8dt4\nZQ9/l1cRFz/TiTSxXrGvKEQyyM2ReFtbNloki+TYsk6Rmjwf22NRpMq23L677J+uC/v08b4y\nrV6xr2hESp+bo/F2tmxY28zJsWUVIrXOsOvB0+ZeyXXoXS4/3lnilR1KVKX+qafqa4M3nclj\nfSVRvWJfiYg0Q27qpf8c6mxdtvQaWjI5trgX6edDZ8znTbhu372vRpEePtWXpo93luOVXZZj\nQ9UAUnn2vl1W7dO65G1nMtZXEtYr9pWeSDPl5jY6anfYslZDSybHFuciXdYPZb1uTsJ/VTdE\nDs+T1Wu6p9nHkCr7Ui/7Z3dz47rep/UNlIfO5LCvJK1X7CudjZstN/Ug35tWna87W9ZqaMnk\n2OJcpH8u61357iK8ro78Dz/fdZ9w/rTdU29+Pmg6i1RZfZO9uruxvQJ+sz/fuN7db2lNDvtK\n0nrFvtLZuPlyU4bePNlw0XmyodqyQ0NLJscW5yJ1M7i7xy0U0aOobHCmf2Rl0nrrxaOTM3du\nHqlgieTYsgqRQnku/et6P1p7WmfRVzZOpET11ov1yVkoN4/VM7liREpELHl/h8P5+snoKxsn\nUqJ668X65CyUG5lFkmOLP5Eg8HftRGbtj03qF2n1BNwFbMFRkWaNIlMQSYW7gC1AJAFEUuEu\nYAsQSQCRVLgL2AJEEkAkFe4CtgCRBBBJhbuALUAkAUSSWHhwMzMQSQCRVLgL2AJEEkAkFe4C\ntgCRBBBJhbuALUAkAURS4S5gCxBJAJFUuAvYAkQSQCQV7gK2AJEEEEmFu4AtQCQBRFLhLmAL\nEEkAkVTMHfB/JYrXWUEkAURSkUHAs3szAJEEEElFBgEjUtYgkgp3AVuASAKIpMJdwBYgkgAi\n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",
      "text/plain": [
       "plot without title"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(HH)\n",
    "tg$dose = factor(tg$dose)\n",
    "interaction2wt(tg$len~tg$supp*tg$dose)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "ad1b864a-aa11-41c8-a27c-1114df9721d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] \"Plant\"     \"Type\"      \"Treatment\" \"conc\"      \"uptake\"   \n"
     ]
    }
   ],
   "source": [
    "print(colnames(CO2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "ecdb0b9b-9982-4de5-a930-bcfb7ce0fd86",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grouped Data: uptake ~ conc | Plant\n",
      "  Plant   Type  Treatment conc uptake\n",
      "1   Qn1 Quebec nonchilled   95   16.0\n",
      "2   Qn1 Quebec nonchilled  175   30.4\n",
      "3   Qn1 Quebec nonchilled  250   34.8\n",
      "4   Qn1 Quebec nonchilled  350   37.2\n",
      "5   Qn1 Quebec nonchilled  500   35.3\n",
      "6   Qn1 Quebec nonchilled  675   39.2\n"
     ]
    }
   ],
   "source": [
    "print(head(CO2))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10e71623-6787-4968-b078-998401c72616",
   "metadata": {},
   "source": [
    "unique() 函数对于向量和数据框的列可以直接使用，但对于整个数据框，如果想根据多列去重，建议使用 dplyr 包的 distinct() 函数，这样更方便且符合 dplyr 的数据处理管道风格。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "afead0ea-dd86-49b3-8bb1-a8d20e72769b",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Attaching package: 'dplyr'\n",
      "\n",
      "\n",
      "The following object is masked from 'package:gridExtra':\n",
      "\n",
      "    combine\n",
      "\n",
      "\n",
      "The following object is masked from 'package:car':\n",
      "\n",
      "    recode\n",
      "\n",
      "\n",
      "The following object is masked from 'package:MASS':\n",
      "\n",
      "    select\n",
      "\n",
      "\n",
      "The following objects are masked from 'package:stats':\n",
      "\n",
      "    filter, lag\n",
      "\n",
      "\n",
      "The following objects are masked from 'package:base':\n",
      "\n",
      "    intersect, setdiff, setequal, union\n",
      "\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   Plant        Type  Treatment\n",
      "1    Qn1      Quebec nonchilled\n",
      "2    Qn2      Quebec nonchilled\n",
      "3    Qn3      Quebec nonchilled\n",
      "4    Qc1      Quebec    chilled\n",
      "5    Qc2      Quebec    chilled\n",
      "6    Qc3      Quebec    chilled\n",
      "7    Mn1 Mississippi nonchilled\n",
      "8    Mn2 Mississippi nonchilled\n",
      "9    Mn3 Mississippi nonchilled\n",
      "10   Mc1 Mississippi    chilled\n",
      "11   Mc2 Mississippi    chilled\n",
      "12   Mc3 Mississippi    chilled\n"
     ]
    }
   ],
   "source": [
    "library(dplyr)\n",
    "print(distinct(CO2,Plant,Type,Treatment))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1d5d3b4-8891-486c-9a37-40701f9692a6",
   "metadata": {},
   "source": [
    "在 R 语言中，有多个数据集可能涉及到 CO2 数据。为了准确解释你所指的“总 CO2 数据集”中的各个字段含义，我先假设你说的是 `CO2` 内置数据集。以下是对 `CO2` 数据集的解释：\n",
    "\n",
    "\n",
    "#### 1. `CO2` 数据集简介\n",
    "- `CO2` 数据集是 R 语言内置的一个数据集，通常用于演示统计分析和绘图。该数据集包含了一个关于草甸植物的 CO2 摄取量的实验数据。\n",
    "\n",
    "\n",
    "#### 2. 数据集的各个字段及其含义\n",
    "- **`Plant`**：\n",
    "    - **含义**：植物的编号或标识符。它是一个因子变量，用于区分不同的实验植物个体。\n",
    "    - **示例**：可能包含 `Qn1`、`Qn2` 等，每个不同的代码表示一株植物，方便对不同植物的实验数据进行追踪和分析。\n",
    "- **`Type`**：\n",
    "    - **含义**：植物的类型，是一个因子变量，可能表示不同的品种或处理组。在 `CO2` 数据集中，通常有两种类型：魁北克（Quebec）和密西西比（Mississippi）。\n",
    "    - **示例**：`Quebec` 或 `Mississippi`。\n",
    "- **`Treatment`**：\n",
    "    - **含义**：处理方式，是一个因子变量。通常表示对植物的不同处理，例如，在 `CO2` 数据集中，有两种处理：非冷藏（nonchilled）和冷藏（chilled）。\n",
    "    - **示例**：`nonchilled` 或 `chilled`。\n",
    "- **`conc`**：\n",
    "    - **含义**：环境中 CO2 的浓度，是一个数值型变量。该变量表示植物周围的 CO2 浓度，是实验中的自变量，其单位可能是 ppm（百万分之一）或其他浓度单位，具体取决于实验设计。\n",
    "    - **示例**：可以是 95、175、250、350、500、675、1000 等，表示不同的 CO2 浓度水平。\n",
    "- **`uptake`**：\n",
    "    - **含义**：植物的 CO2 摄取量，是一个数值型变量。该变量是实验的因变量，用于衡量在不同处理、不同 CO2 浓度下，植物吸收 CO2 的能力，其单位可能根据实验而定，比如 mg CO2 每单位时间等。\n",
    "    - **示例**：不同的数值表示植物在相应条件下的 CO2 摄取量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "69d093f2-f55a-410c-bcc1-83df65ee4f42",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] 84\n"
     ]
    }
   ],
   "source": [
    "print(nrow(CO2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "ce0d9d6b-83fe-4247-91ac-8fe4245e988c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grouped Data: uptake ~ conc | Plant\n",
      "   Plant        Type Treatment conc uptake\n",
      "22   Qc1      Quebec   chilled   95   14.2\n",
      "23   Qc1      Quebec   chilled  175   24.1\n",
      "24   Qc1      Quebec   chilled  250   30.3\n",
      "25   Qc1      Quebec   chilled  350   34.6\n",
      "26   Qc1      Quebec   chilled  500   32.5\n",
      "27   Qc1      Quebec   chilled  675   35.4\n",
      "28   Qc1      Quebec   chilled 1000   38.7\n",
      "29   Qc2      Quebec   chilled   95    9.3\n",
      "30   Qc2      Quebec   chilled  175   27.3\n",
      "31   Qc2      Quebec   chilled  250   35.0\n",
      "32   Qc2      Quebec   chilled  350   38.8\n",
      "33   Qc2      Quebec   chilled  500   38.6\n",
      "34   Qc2      Quebec   chilled  675   37.5\n",
      "35   Qc2      Quebec   chilled 1000   42.4\n",
      "36   Qc3      Quebec   chilled   95   15.1\n",
      "37   Qc3      Quebec   chilled  175   21.0\n",
      "38   Qc3      Quebec   chilled  250   38.1\n",
      "39   Qc3      Quebec   chilled  350   34.0\n",
      "40   Qc3      Quebec   chilled  500   38.9\n",
      "41   Qc3      Quebec   chilled  675   39.6\n",
      "42   Qc3      Quebec   chilled 1000   41.4\n",
      "64   Mc1 Mississippi   chilled   95   10.5\n",
      "65   Mc1 Mississippi   chilled  175   14.9\n",
      "66   Mc1 Mississippi   chilled  250   18.1\n",
      "67   Mc1 Mississippi   chilled  350   18.9\n",
      "68   Mc1 Mississippi   chilled  500   19.5\n",
      "69   Mc1 Mississippi   chilled  675   22.2\n",
      "70   Mc1 Mississippi   chilled 1000   21.9\n",
      "71   Mc2 Mississippi   chilled   95    7.7\n",
      "72   Mc2 Mississippi   chilled  175   11.4\n",
      "73   Mc2 Mississippi   chilled  250   12.3\n",
      "74   Mc2 Mississippi   chilled  350   13.0\n",
      "75   Mc2 Mississippi   chilled  500   12.5\n",
      "76   Mc2 Mississippi   chilled  675   13.7\n",
      "77   Mc2 Mississippi   chilled 1000   14.4\n",
      "78   Mc3 Mississippi   chilled   95   10.6\n",
      "79   Mc3 Mississippi   chilled  175   18.0\n",
      "80   Mc3 Mississippi   chilled  250   17.9\n",
      "81   Mc3 Mississippi   chilled  350   17.9\n",
      "82   Mc3 Mississippi   chilled  500   17.9\n",
      "83   Mc3 Mississippi   chilled  675   18.9\n",
      "84   Mc3 Mississippi   chilled 1000   19.9\n"
     ]
    }
   ],
   "source": [
    "print(subset(CO2,Treatment==\"chilled\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f4f13074-34e7-4a70-ae1d-6378d43c4eff",
   "metadata": {},
   "source": [
    "**重复测量方差分析（Repeated Measures ANOVA）**\n",
    "\n",
    "#### 1. 概念\n",
    "- 重复测量方差分析是一种统计分析方法，用于分析同一组受试者在不同时间点或不同条件下的多次测量数据。它主要用于控制个体差异对实验结果的影响，因为它将每个个体作为自己的对照，从而提高了统计检验的效力。\n",
    "\n",
    "\n",
    "#### 2. 适用场景\n",
    "- 适用于以下几种情况：\n",
    "    - 纵向研究：在不同时间点测量同一组对象的某个指标，例如，在治疗前后多次测量患者的血压。\n",
    "    - 实验中，对同一组受试者施加不同的处理，并在每次处理后测量其反应，例如，让一组学生参加不同的培训课程，并在每次课程后测试他们的成绩。\n",
    "\n",
    "#### 3.假设\n",
    "- 任意组内因子的协方差矩阵为球形；球形性假设本质上是关于组内因子协方差矩阵的结构假设。具体来说，它假设组内因子协方差矩阵具有复合对称性，即协方差矩阵的对角线上元素（方差）相等，非对角线上的协方差也相等。\n",
    "- 任意组内因子两水平间的方差之差都相等。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "3bc524a0-d53c-4d85-9f90-8f74d05c38a2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "Error: Plant\n",
       "          Df Sum Sq Mean Sq F value  Pr(>F)   \n",
       "Type       1 2667.2  2667.2   60.41 0.00148 **\n",
       "Residuals  4  176.6    44.1                   \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n",
       "\n",
       "Error: Plant:conc\n",
       "          Df Sum Sq Mean Sq F value   Pr(>F)    \n",
       "conc       6 1472.4  245.40   52.52 1.26e-12 ***\n",
       "conc:Type  6  428.8   71.47   15.30 3.75e-07 ***\n",
       "Residuals 24  112.1    4.67                     \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df<-CO2\n",
    "df$conc <- factor(df$conc)\n",
    "w1b1 <- subset(df,Treatment==\"chilled\")\n",
    "fit <- aov(uptake ~ conc*Type + Error(Plant/(conc)),data=w1b1)#type组内因子，conc组间因子\n",
    "summary(fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "c6356f50-2f76-4c53-be28-aa4c46396834",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] \"Qc1\" \"Qc3\" \"Qc2\" \"Mc2\" \"Mc3\" \"Mc1\"\n",
      "[1] \"95\"   \"175\"  \"250\"  \"350\"  \"500\"  \"675\"  \"1000\"\n",
      "[1] \"Quebec\"      \"Mississippi\"\n"
     ]
    }
   ],
   "source": [
    "# 查看不同因子的水平数\n",
    "print(levels(w1b1$Plant))\n",
    "print(levels(w1b1$conc))\n",
    "print(levels(w1b1$Type))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79b5b5a8-6257-412b-b716-9fa6171ea297",
   "metadata": {},
   "source": [
    "`Error(Plant/(conc))`：\n",
    "- Error() 函数在这里用于指定误差项的结构。\n",
    "- Plant/(conc) 表示将 Plant 作为一个随机效应，conc 嵌套在 Plant 中。这意味着对于每一株植物（Plant），其在不同的二氧化碳浓度（conc）下的测量是重复测量。\n",
    "例如，假设你有多个植物，并且对每株植物在不同的二氧化碳浓度下多次测量其二氧化碳摄取量，这种结构可以考虑植物个体之间的差异以及同一植物在不同浓度下的变化。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ec65441-899d-4750-8810-559b5d24236b",
   "metadata": {},
   "source": [
    "#### 组间因子（Between-Subjects Factors）\n",
    "\n",
    "##### 1. 市场调查中的组间因子\n",
    "- **实验设计**：\n",
    "    - 一家公司想要测试不同广告策略对产品销量的影响。将消费者随机分成三组，每组消费者只看到一种广告策略（策略 A、策略 B 或策略 C），然后观察他们在一定时间内购买该产品的情况。\n",
    "- **组间因子**：\n",
    "    - 这里的“广告策略”就是组间因子，因为不同组的消费者接受不同的广告刺激，组与组之间是相互独立的，每组代表一个独立的实验条件。\n",
    "\n",
    "\n",
    "##### 2. 医学研究中的组间因子\n",
    "- **实验设计**：\n",
    "    - 在药物疗效的试验中，将患者分为三组，第一组服用药物 A，第二组服用药物 B，第三组服用安慰剂。在一段时间后，测量患者的症状改善情况。\n",
    "- **组间因子**：\n",
    "    - “药物类型”是组间因子，因为每个患者只属于其中一组，接受一种药物治疗，不同组的患者接受不同的药物或安慰剂处理。\n",
    "\n",
    "\n",
    "##### 3. 农业研究中的组间因子\n",
    "- **实验设计**：\n",
    "    - 研究不同肥料对农作物产量的影响，将一块土地分成三个区域，每个区域施用不同的肥料（肥料 X、肥料 Y 或肥料 Z），然后收获时测量农作物产量。\n",
    "- **组间因子**：\n",
    "    - “肥料种类”是组间因子，因为不同区域使用不同的肥料，每个区域代表一个组，组间是相互独立的。\n",
    "\n",
    "\n",
    "#### 组内因子（Within-Subjects Factors）\n",
    "\n",
    "##### 1. 心理实验中的组内因子\n",
    "- **实验设计**：\n",
    "    - 研究睡眠剥夺对认知能力的影响，让一组受试者在正常睡眠、轻度睡眠剥夺和重度睡眠剥夺三种条件下进行相同的认知测试。\n",
    "- **组内因子**：\n",
    "    - “睡眠剥夺程度”是组内因子，因为同一组受试者要经历所有的实验条件（正常睡眠、轻度剥夺、重度剥夺），并在每个条件下进行测试，测量结果可以反映同一受试者在不同睡眠状态下的认知能力变化。\n",
    "\n",
    "\n",
    "##### 2. 教育实验中的组内因子\n",
    "- **实验设计**：\n",
    "    - 为了评估一种新的教学软件对学生学习效果的影响，让一组学生使用该软件学习不同的学科内容（如数学、语文、英语），并在学习完每个学科后进行测试。\n",
    "- **组内因子**：\n",
    "    - “学科内容”是组内因子，因为同一组学生要在不同的学科上使用软件学习并接受测试，我们可以观察学生在不同学科学习时的表现变化。\n",
    "\n",
    "\n",
    "##### 3. 产品测试中的组内因子\n",
    "- **实验设计**：\n",
    "    - 评估一款新型手机的电池续航能力，让一组测试者在不同使用场景下使用手机（如通话、游戏、上网），并记录每次使用后的电池剩余电量。\n",
    "- **组内因子**：\n",
    "    - “使用场景”是组内因子，因为同一组测试者会在不同使用场景下使用手机，通过比较他们在不同场景下手机的电池消耗情况，评估手机的续航能力。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "91851c2a-ff6e-4775-8286-8b2cc216b5c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAOVBMVEX9/v0AAAAAAP9MTUxn\naGd7e3uLjIuZmpmmpqaxsrG7vLvFxsXOz87X2Nff4N/n6Ofu7+79/v3/AAA7dfO6AAAAE3RS\nTlP//////////////////////wD/DFvO9wAAAAlwSFlzAAASdAAAEnQB3mYfeAAAIABJREFU\neJzt3Q27akoAhuEzS6RS2P//xx6DREkyr/HRc1/X2afdLiz1rNCk/3IAzv5begGAPSAkQICQ\nAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAAB\nQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUIC\nBAgJECAkQICQAAFCAgS2E5Ixpvf648TpHQenOsK4BToFxny9iKOW6jj4VyGHdTTa8NI7P1bz\n23pI12Dayr3fTx7S0wKdilvNEtLTfKauB9HSOBpeesFjNb+thzR15d7vJw/p6dqDMTfVpIdu\nMueTbP4n8PAcBI/V/LYTUj/XkOSzljzBCcnv/AW2E1K9Ou3/krDYXLpVfzH19VkcmCBO7zdN\nDyYuLl2i4vKhvjqLi9eHMOncr3mQkqPdBkse82pm0lmCczGJYzOXl7u2Fijv3uhlBvUSDk66\nvfjvfvD2bI0J6msC+49PU+2so7u3syikx8Aczs9P5Mdq/LjeOjd9eoT6fpi+B27aY+XdFkOK\nq1V7a6/kNKguXuvb2Acwz8P6BuXV95vEfQ/O/ZZR/jKT9hJE5ZVBmr+565sneN8MqiUcnHRn\n8d/84J35FE+w6umV3H/M9lQ766j2fhbFvkl1OTSdkFqr8dN669z0+RHq+2FMzwPX+dfRj5V3\nWwypdmw/BPWjVP1Gri5e8nPxoGR5Hlfr/H6T4rn28uBEzVSjl5m0l6B2yN/c9THh9j3ezeAy\nPOnu4r/5wTvzud6fXVH5hH2aamcdVQZm0VphnZBaq/HTeuvctOcRevlh7qulvVidfx39WHm3\nxZCC4nE5Pv5q/1et+exYPTlN9TjYPf3HL/jiJsEtz8LqWXV/clT/L36Bm3Nx/1P9oD/N5LEE\nQfH0TILmRv137VnqnluVSzg46c7iv/nBn+ZT3yVtfsjWVLvrqDI0i0v1N3vv1qw6q3F4vXVu\n+vII9f0wvQ/cpMfKuy2GZFdf1n0Iit9SWfXX6HGb7l2j+o6HU5o/PzjFo3Au/xpXv9eeZvKY\nTPkUTJob9d+1Z6nfzGB40t1p9P/gT/M5VdtRcTW77lS766hv5XZnUa+w8pn7uGVnNQ6vt85N\nex+h5x+m94Gb9Fh5t8WQev76eH0Pqr/df92nlzistgz6npyth6q6Q9r30D3fJ2+/qL2768tS\nP98q67lZd9KdxX/zgz9NIKtWQFBNvjvV7jpqvJ1F6969R08+rrfnm3Yfob4fpveBm/RYebe7\nkDqP4OXwuPZDSJ3rP4ZkPt61f6nf3Kp/0p3FHxdS9SpQv649TbW7jvLXNTQppIH19iakgR+m\n94Gb9Fh5t5OQgt5nfLGVbw7H821MSM1vuZ5fmI/7ZN07Ddz1ZamHbtU/6c7ijwwpsQe9wnoL\nqTvVoOeZNjSLcSENrLfOTfsfoTchfVisEY+VdzsJKepsXN9vc3g8ofL7s6t3Hyl6s6PzElJ5\nq6TZzh+4a3dRPtyqf9KdxR8Zkn3CJveNt+5Uo6cdkJc19LpSyn+7dGYVPu34DKy355v2PEJv\nQvqwWCMeK+/2EFJWHWG6lv8LX29T/WJ7PWr32I14d+jtJSS7824PY50H75p17pMPzGBw0p3F\nf/ODt+dT/rV6T+XUM9XuOuosXu8sztXhsMt3R+2eJtDcdPAR6j4afYv17WPl3dZDso9ynLfe\nsri2bhOW/3Y/ftvc5Ny6X33T5g3A7s7Fa0iVIH971/uEu0v9bgaDk+4u/psfvNb8NS2nkvVN\ntbOO8p411DOLWt6dU7Mah9fbyxp/eYSefpj3D9y3j5V3Ww/Jvn1gf8Ul9bqN27e53p9G5aN3\nbb/Pfr/f8xO9O2DfPIdU/b7vH9lQ3fU+4e5Sv5vB4KS7i//mB689/mp306PeqXbWUd6zhp5m\nUf9j1F3YzmocXm+dm/Y+Qk8/TP8DN+Wx8m7rIdlN5nKFlsO6oqTzb/mteAyC4y2tnlp2sNf9\nJvf7NTdNjkF3/FZnQs3fLgcTxFn3Hzt3bRYof5pC7wyGJ91Z/Hc/+PNs7S5N0jvVzjrKe9bQ\n8yzS4h/DnrF2rdU4vN46N+17hJ5+mDcP3ITHyrvthLS8GR8q4aTPj/eJFn5u/RRCGm8TId2C\nx7YbIflDSONtIKRq5+H2+JtkqviMkMbbSkgn9VTxGSGNt4GQ7Kd5Oh/OkEwVnxESIEBIgAAh\n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\nxbCAAQAAAABJRU5ErkJggg==",
      "text/plain": [
       "Plot with title \"interaction plot for plant type and concentration\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(las=2)\n",
    "par(mar=c(10,4,4,2))\n",
    "with(w1b1,\n",
    "     interaction.plot(conc,Type,uptake,\n",
    "                          type=\"b\",col=c(\"red\",\"blue\"),pch=c(16,18),\n",
    "                          main=\"interaction plot for plant type and concentration\")\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "d428a03e-0013-4117-97ee-c1246e0bfec5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Plot with title \"chilled quebec and mississippi plants\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "par(las=2)\n",
    "par(mar=c(10,4,4,2))\n",
    "boxplot(\n",
    "    uptake~Type*conc,\n",
    "    data=w1b1,col=c(\"gold\",\"green\"),\n",
    "    main=\"chilled quebec and mississippi plants\",\n",
    "    ylab = \"CO2 uptake rate (umol/m^2 sec)\",\n",
    "    xlab = ''\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "a34fd1ee-a86f-41ab-a10b-91c07179dcef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Grouped Data: uptake ~ conc | Plant\n",
      "  Plant   Type  Treatment conc uptake\n",
      "1   Qn1 Quebec nonchilled   95   16.0\n",
      "2   Qn1 Quebec nonchilled  175   30.4\n",
      "3   Qn1 Quebec nonchilled  250   34.8\n",
      "4   Qn1 Quebec nonchilled  350   37.2\n",
      "5   Qn1 Quebec nonchilled  500   35.3\n",
      "6   Qn1 Quebec nonchilled  675   39.2\n"
     ]
    }
   ],
   "source": [
    "print(head(CO2))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c745669c-3d92-4692-94b6-38242e724b3f",
   "metadata": {},
   "source": [
    "**多元方差分析**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "e8257c65-e6d5-4880-b6be-fef89722ebc3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                          mfr calories   protein      fat   sodium     fibre\n",
      "100% Bran                   N 212.1212 12.121212 3.030303 393.9394 30.303030\n",
      "All-Bran                    K 212.1212 12.121212 3.030303 787.8788 27.272727\n",
      "All-Bran with Extra Fiber   K 100.0000  8.000000 0.000000 280.0000 28.000000\n",
      "Apple Cinnamon Cheerios     G 146.6667  2.666667 2.666667 240.0000  2.000000\n",
      "Apple Jacks                 K 110.0000  2.000000 0.000000 125.0000  1.000000\n",
      "Basic 4                     G 173.3333  4.000000 2.666667 280.0000  2.666667\n",
      "                             carbo   sugars shelf potassium vitamins\n",
      "100% Bran                 15.15152 18.18182     3 848.48485 enriched\n",
      "All-Bran                  21.21212 15.15151     3 969.69697 enriched\n",
      "All-Bran with Extra Fiber 16.00000  0.00000     3 660.00000 enriched\n",
      "Apple Cinnamon Cheerios   14.00000 13.33333     1  93.33333 enriched\n",
      "Apple Jacks               11.00000 14.00000     2  30.00000 enriched\n",
      "Basic 4                   24.00000 10.66667     3 133.33333 enriched\n"
     ]
    }
   ],
   "source": [
    "library(MASS)\n",
    "df <- UScereal\n",
    "print(head(df))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3e2cda04-d89b-4ff7-92a5-d6429606f6ff",
   "metadata": {},
   "source": [
    "UScereal是R语言中的一个数据集，它包含了美国的粥食公司的数据。这个数据集是R语言自带的一个示例数据集，通常用于学习如何使用数据框（data frame）和进行简单的数据分析。\n",
    "\n",
    "- UScereal数据集包含以下字段：\n",
    "\n",
    "- Brand: 粥食品牌名称\n",
    "\n",
    "- Mfr: 制造商名称\n",
    "\n",
    "- Calories: 卡路里数（单位：卡）\n",
    "\n",
    "- Protein: 蛋白质的克数（单位：克）\n",
    "\n",
    "- Fat: 脂肪的克数（单位：克）\n",
    "\n",
    "- Fiber: 纤维的克数（单位：克）\n",
    "\n",
    "- Carbo: 碳水化合物的克数（单位：克）\n",
    "\n",
    "- Sugar: 糖的克数（单位：克）\n",
    "\n",
    "- Calories.from.Fat: 脂肪提供的卡路里（单位：卡）\n",
    "\n",
    "- Shelf: 存储架位\n",
    "\n",
    " - Weight: 重量（单位：磅）\n",
    "\n",
    "这些字段描述了每种粥食产品的各种属性，包括品牌、制造商、卡路里内容、蛋白质含量等。这些信息可以用于进行基本的数据分析，比如描述性统计、关联性分析、或者其他一些数据挖掘技术。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "d43ad849-1b89-4f91-8876-30e5ece0ccc5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      calories      fat    sugars\n",
      " [1,] 212.1212 3.030303 18.181818\n",
      " [2,] 212.1212 3.030303 15.151515\n",
      " [3,] 100.0000 0.000000  0.000000\n",
      " [4,] 146.6667 2.666667 13.333333\n",
      " [5,] 110.0000 0.000000 14.000000\n",
      " [6,] 173.3333 2.666667 10.666667\n",
      " [7,] 134.3284 1.492537  8.955224\n",
      " [8,] 134.3284 0.000000  7.462687\n",
      " [9,] 160.0000 2.666667 16.000000\n",
      "[10,]  88.0000 1.600000  0.800000\n"
     ]
    }
   ],
   "source": [
    "df$shelf <- factor(df$shelf)\n",
    "y <- cbind(calories=df$calories,fat=df$fat,sugars=df$sugars)\n",
    "print(y[1:10,])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "788d9a9f-450c-4c0e-bd68-263c26c99771",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  shelf calories       fat    sugars\n",
      "1     1 119.4774 0.6621338  6.295493\n",
      "2     2 129.8162 1.3413488 12.507670\n",
      "3     3 180.1466 1.9449071 10.856821\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(y,by=list(shelf=df$shelf),FUN=mean))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "9c972206-ad02-41da-b1ac-2bdbad8275d1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 3 × 3 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>calories</th><th scope=col>fat</th><th scope=col>sugars</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>calories</th><td>3895.24210</td><td>60.674383</td><td>180.380317</td></tr>\n",
       "\t<tr><th scope=row>fat</th><td>  60.67438</td><td> 2.713399</td><td>  3.995474</td></tr>\n",
       "\t<tr><th scope=row>sugars</th><td> 180.38032</td><td> 3.995474</td><td> 34.050018</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 3 × 3 of type dbl\n",
       "\\begin{tabular}{r|lll}\n",
       "  & calories & fat & sugars\\\\\n",
       "\\hline\n",
       "\tcalories & 3895.24210 & 60.674383 & 180.380317\\\\\n",
       "\tfat &   60.67438 &  2.713399 &   3.995474\\\\\n",
       "\tsugars &  180.38032 &  3.995474 &  34.050018\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 3 × 3 of type dbl\n",
       "\n",
       "| <!--/--> | calories | fat | sugars |\n",
       "|---|---|---|---|\n",
       "| calories | 3895.24210 | 60.674383 | 180.380317 |\n",
       "| fat |   60.67438 |  2.713399 |   3.995474 |\n",
       "| sugars |  180.38032 |  3.995474 |  34.050018 |\n",
       "\n"
      ],
      "text/plain": [
       "         calories   fat       sugars    \n",
       "calories 3895.24210 60.674383 180.380317\n",
       "fat        60.67438  2.713399   3.995474\n",
       "sugars    180.38032  3.995474  34.050018"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cov(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "b2419927-8a80-4087-be5c-4d3c96b375b0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "          Df Pillai approx F num Df den Df    Pr(>F)    \n",
       "df$shelf   2 0.4021   5.1167      6    122 0.0001015 ***\n",
       "Residuals 62                                            \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit <- manova(y~df$shelf)\n",
    "summary(fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "f5739473-707e-4631-b182-3d30b9adadd3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "65"
      ],
      "text/latex": [
       "65"
      ],
      "text/markdown": [
       "65"
      ],
      "text/plain": [
       "[1] 65"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nrow(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "cc7b46d9-3cfb-4c6d-b484-f46bd6e76c0b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       " Response calories :\n",
       "            Df Sum Sq Mean Sq F value    Pr(>F)    \n",
       "df$shelf     2  50435 25217.6  7.8623 0.0009054 ***\n",
       "Residuals   62 198860  3207.4                      \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n",
       "\n",
       " Response fat :\n",
       "            Df Sum Sq Mean Sq F value  Pr(>F)  \n",
       "df$shelf     2  18.44  9.2199  3.6828 0.03081 *\n",
       "Residuals   62 155.22  2.5035                  \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n",
       "\n",
       " Response sugars :\n",
       "            Df  Sum Sq Mean Sq F value   Pr(>F)   \n",
       "df$shelf     2  381.33 190.667  6.5752 0.002572 **\n",
       "Residuals   62 1797.87  28.998                    \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "summary.aov(fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "bd86f011-a422-425d-ab31-7c34886be515",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  Tukey multiple comparisons of means\n",
       "    95% family-wise confidence level\n",
       "\n",
       "Fit: aov(formula = df$calories ~ df$shelf)\n",
       "\n",
       "$`df$shelf`\n",
       "        diff        lwr       upr     p adj\n",
       "2-1 10.33877 -34.992274  55.66981 0.8480503\n",
       "3-1 60.66917  19.862551 101.47579 0.0019863\n",
       "3-2 50.33040   9.523785  91.13702 0.0118943\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit <- aov(df$calories~df$shelf)\n",
    "TukeyHSD(fit)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6bc58f66-6212-4c4d-b7bf-ff50e2dcdbc6",
   "metadata": {},
   "source": [
    "**单因素多元方差分析有两个前提假设：**\n",
    "- 多元正态性：因变量组合成的向量服从一个多元正态分布。若有一个$p\\times1$的多元正态随机向量$x$,均值为$\\mu$,协方差矩阵为$\\Sigma$,那么$x$与$\\mu$的马氏距离的平方服从自由度为$p$的卡方分布。\n",
    "- 方差-协方差矩阵同质性。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "aecc7253-a5b6-4a82-b22d-e28b9a67e645",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       ".dl-inline {width: auto; margin:0; padding: 0}\n",
       ".dl-inline>dt, .dl-inline>dd {float: none; width: auto; display: inline-block}\n",
       ".dl-inline>dt::after {content: \":\\0020\"; padding-right: .5ex}\n",
       ".dl-inline>dt:not(:first-of-type) {padding-left: .5ex}\n",
       "</style><dl class=dl-inline><dt>calories</dt><dd>149.408257846154</dd><dt>fat</dt><dd>1.42253835076923</dd><dt>sugars</dt><dd>10.0508422461538</dd></dl>\n"
      ],
      "text/latex": [
       "\\begin{description*}\n",
       "\\item[calories] 149.408257846154\n",
       "\\item[fat] 1.42253835076923\n",
       "\\item[sugars] 10.0508422461538\n",
       "\\end{description*}\n"
      ],
      "text/markdown": [
       "calories\n",
       ":   149.408257846154fat\n",
       ":   1.42253835076923sugars\n",
       ":   10.0508422461538\n",
       "\n"
      ],
      "text/plain": [
       "  calories        fat     sugars \n",
       "149.408258   1.422538  10.050842 "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "center <- colMeans(y)\n",
    "center "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "859a5000-2fa2-4963-994a-e6fbe56b8baf",
   "metadata": {},
   "outputs": [],
   "source": [
    "n <- nrow(y)\n",
    "p <- ncol(y)\n",
    "conv <- cov(y)\n",
    "d <- mahalanobis(y,center,conv)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8bd5051a-98df-4aa1-b9cf-fd0e89323cf6",
   "metadata": {},
   "source": [
    "1. **马氏距离（马哈拉诺比斯距离，Mahalanobis Distance）概念**\n",
    "   - 马氏距离是由印度统计学家P. C. Mahalanobis提出的一种距离度量方式。与欧氏距离不同，它考虑了数据的协方差结构。在多变量分析中，用于衡量一个样本点与一个分布（如多元正态分布）的中心（均值）之间的距离。\n",
    "   - 对于一个具有均值向量$\\mu$和协方差矩阵$\\Sigma$的多元正态分布，样本点$x$到均值的马氏距离定义为$d_M(x)=\\sqrt{(x - \\mu)^T\\Sigma^{-1}(x - \\mu)}$。\n",
    "\n",
    "2. **在数据分析中的作用**\n",
    "   - **异常值检测**：在多元数据集中，判断一个数据点是否为异常值。因为马氏距离综合考虑了变量之间的相关性和各自的方差，所以相比欧氏距离，它能更准确地识别那些在分布意义上远离主体数据的点。例如，在一个包含身高和体重两个变量的数据集里，欧氏距离可能会错误地将一些高个子且体重较重（但在身高 - 体重的正常关联范围内）的个体判定为异常值，而马氏距离会根据身高和体重的协方差关系来更合理地判断。\n",
    "   - **聚类分析**：在进行聚类操作之前，马氏距离可以用于数据的预处理阶段，帮助确定哪些数据点可能属于不同的簇或者离群簇。在某些聚类算法中，也可以使用马氏距离作为相似性度量标准，而不是传统的欧氏距离，这样可以使聚类结果更好地适应数据的分布特点。\n",
    "   - **分类问题**：在多变量分类任务中，马氏距离可以用来衡量新样本与各个类别中心的距离，从而将新样本划分到距离最近的类别中。例如，在一个医学诊断数据集，包含多个生理指标作为变量，马氏距离可以用来判断一个新患者的指标数据与不同疾病类别中心的距离，辅助医生进行疾病诊断。\n",
    "\n",
    "3. **在R语言中的应用**\n",
    "   - **计算马氏距离**：在R语言中，可以使用`mahalanobis()`函数来计算马氏距离。假设你有一个数据矩阵$x$，均值向量$\\mu$和协方差矩阵$\\Sigma$，代码如下：\n",
    "   ```R\n",
    "   # 计算马氏距离\n",
    "   mahalanobis_distance <- mahalanobis(x, mu, Sigma)\n",
    "   ```\n",
    "   - **异常值检测示例**：\n",
    "   ```R\n",
    "   # 假设data是一个数据框，包含多个变量\n",
    "   data <- scale(data) # 数据标准化，这一步对于马氏距离计算很重要，因为它对协方差结构有影响\n",
    "   mu <- colMeans(data)\n",
    "   Sigma <- cov(data)\n",
    "   mahalanobis_distance <- mahalanobis(data, mu, Sigma)\n",
    "   cutoff_value <- qchisq(0.975, df = ncol(data)) # 根据卡方分布确定一个阈值，用于判断异常值\n",
    "   outliers <- which(mahalanobis_distance > cutoff_value) # 找到距离大于阈值的点，即可能的异常值\n",
    "   ```\n",
    "   - **注意事项**：\n",
    "   - 数据的协方差矩阵$\\Sigma$必须是正定矩阵。如果协方差矩阵不是正定的（可能由于数据的共线性等问题导致），马氏距离的计算会出现问题。在这种情况下，可能需要对数据进行处理，如主成分分析（PCA）来降低维度，或者使用正则化方法来修正协方差矩阵。\n",
    "   - 马氏距离对数据的分布有一定的假设，通常假设数据服从多元正态分布。如果数据不满足这个假设，马氏距离的解释和效果可能会受到影响。不过，在很多实际应用中，即使数据不完全符合正态分布，马氏距离仍然可以提供有价值的信息。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "7b13614c-d2dd-45a2-8e44-3db03348111a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1] 0.06756757 0.17567568 0.28378378 0.39189189 0.50000000 0.60810811 0.71621622\n",
      "[8] 0.82432432 0.93243243\n"
     ]
    }
   ],
   "source": [
    "print(ppoints(9))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "53c8cfad-2aaf-4520-970d-53a75ab685b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " [1] 0.06097561 0.15853659 0.25609756 0.35365854 0.45121951 0.54878049\n",
      " [7] 0.64634146 0.74390244 0.84146341 0.93902439\n"
     ]
    }
   ],
   "source": [
    "print(ppoints(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "05d6a4b1-b112-4d45-866c-008baf21a38a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Plot with title \"Q-Q Plot Assessing Multivariate Normality\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "coord <- qqplot(qchisq(ppoints(n),df=p),\n",
    "                d,main=\"Q-Q Plot Assessing Multivariate Normality\",\n",
    "                ylab = \"Mahalanobis d2\",\n",
    "               )\n",
    "abline(a=0,b=1)\n",
    "# identify(coord$x,coord$y,labels=row.names(df))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25a9db71-a413-48b1-b960-b291c3efa8a0",
   "metadata": {},
   "source": [
    "方差同质性中的不同组，这里就是按照shelf将数据进行了分组，需要验证$\\Sigma_1=\\Sigma_2=\\Sigma_3$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "f759c78b-aafd-48d0-9b9f-e06541493644",
   "metadata": {},
   "outputs": [],
   "source": [
    "# install.packages(\"mvoutlier\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "0295afc5-3eeb-49e6-aca5-0219908b6dc9",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading required package: sgeostat\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Projection to the first and second robust principal components.\n",
      "Proportion of total variation (explained variance): 0.9789888\n",
      "$outliers\n",
      " [1] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE\n",
      "[13] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE\n",
      "[25] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE\n",
      "[37] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE\n",
      "[49] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE\n",
      "[61] FALSE FALSE FALSE FALSE FALSE\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "Plot with title \"Outliers based on adjusted quantile\""
      ]
     },
     "metadata": {
      "image/png": {
       "height": 420,
       "width": 420
      }
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(mvoutlier)\n",
    "outliers <- aq.plot(y)\n",
    "print(outliers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "97b666b7-66ee-4fd6-82fd-c35ca94bf8ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "package 'rrcov' successfully unpacked and MD5 sums checked\n",
      "\n",
      "The downloaded binary packages are in\n",
      "\tC:\\Users\\xie.xiaokang\\AppData\\Local\\Temp\\RtmpyAxAcM\\downloaded_packages\n"
     ]
    }
   ],
   "source": [
    "install.packages(\"rrcov\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "ac1209ce-295d-4dc9-a3b7-fa33cbf8d874",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Loading required package: robustbase\n",
      "\n",
      "\n",
      "Attaching package: 'robustbase'\n",
      "\n",
      "\n",
      "The following object is masked from 'package:survival':\n",
      "\n",
      "    heart\n",
      "\n",
      "\n",
      "Scalable Robust Estimators with High Breakdown Point (version 1.7-6)\n",
      "\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "\n",
       "\tRobust One-way MANOVA (Bartlett Chi2)\n",
       "\n",
       "data:  x\n",
       "Wilks' Lambda = 0.42394, Chi2-Value = 20.9152, DF = 3.9903, p-value =\n",
       "0.000326\n",
       "sample estimates:\n",
       "  calories       fat    sugars\n",
       "1 118.1432 0.7449005  5.100422\n",
       "2 126.7149 1.0724502 12.761427\n",
       "3 160.1003 1.6591192  9.913359\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "library(rrcov)\n",
    "rrcov::Wilks.test(y,df$shelf,method=\"mcd\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b79063f-9a1c-4f53-a263-359889c322c7",
   "metadata": {},
   "source": [
    "在稳健单因素多元方差分析（Robust One - way MANOVA）的结果中，“sample estimates” 部分提供了每个组（在这里可能是根据某个因素划分的三个组）在分析的变量（如 “calories”、“fat”、“sugars”）上的样本估计值。这些估计值通常是每组变量的均值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "7f604fc4-244b-4e55-b34c-be51d6b6636f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  shelf calories       fat    sugars\n",
      "1     1 119.4774 0.6621338  6.295493\n",
      "2     2 129.8162 1.3413488 12.507670\n",
      "3     3 180.1466 1.9449071 10.856821\n"
     ]
    }
   ],
   "source": [
    "print(aggregate(y,by=list(shelf=df$shelf),FUN=mean))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73641cc9-4107-43e7-8634-b8a693d66182",
   "metadata": {},
   "source": [
    "**用回归来做ANOVA**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "443f87c0-17c0-4143-a8a9-a84be7beae28",
   "metadata": {},
   "outputs": [],
   "source": [
    "df <- cholesterol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "b3e4e645-b391-4fd0-a22e-cfb45a5ea55d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "            Df Sum Sq Mean Sq F value   Pr(>F)    \n",
       "trt          4 1351.4   337.8   32.43 9.82e-13 ***\n",
       "Residuals   45  468.8    10.4                     \n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit.aov <- aov(response~trt,data=df)\n",
    "summary(fit.aov)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "f372ce7a-b5f3-4d77-8b1f-d20b53199533",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "Call:\n",
       "lm(formula = response ~ trt, data = df)\n",
       "\n",
       "Residuals:\n",
       "    Min      1Q  Median      3Q     Max \n",
       "-6.5418 -1.9672 -0.0016  1.8901  6.6008 \n",
       "\n",
       "Coefficients:\n",
       "            Estimate Std. Error t value Pr(>|t|)    \n",
       "(Intercept)    5.782      1.021   5.665 9.78e-07 ***\n",
       "trt2times      3.443      1.443   2.385   0.0213 *  \n",
       "trt4times      6.593      1.443   4.568 3.82e-05 ***\n",
       "trtdrugD       9.579      1.443   6.637 3.53e-08 ***\n",
       "trtdrugE      15.166      1.443  10.507 1.08e-13 ***\n",
       "---\n",
       "Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n",
       "\n",
       "Residual standard error: 3.227 on 45 degrees of freedom\n",
       "Multiple R-squared:  0.7425,\tAdjusted R-squared:  0.7196 \n",
       "F-statistic: 32.43 on 4 and 45 DF,  p-value: 9.819e-13\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fit.lm <- lm(response~trt,data=df)\n",
    "summary(fit.lm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "d2c16958-4674-4bb6-a6dc-3844cca1c7bc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 5 × 4 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>2times</th><th scope=col>4times</th><th scope=col>drugD</th><th scope=col>drugE</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>1time</th><td>0</td><td>0</td><td>0</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>2times</th><td>1</td><td>0</td><td>0</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>4times</th><td>0</td><td>1</td><td>0</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>drugD</th><td>0</td><td>0</td><td>1</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>drugE</th><td>0</td><td>0</td><td>0</td><td>1</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 5 × 4 of type dbl\n",
       "\\begin{tabular}{r|llll}\n",
       "  & 2times & 4times & drugD & drugE\\\\\n",
       "\\hline\n",
       "\t1time & 0 & 0 & 0 & 0\\\\\n",
       "\t2times & 1 & 0 & 0 & 0\\\\\n",
       "\t4times & 0 & 1 & 0 & 0\\\\\n",
       "\tdrugD & 0 & 0 & 1 & 0\\\\\n",
       "\tdrugE & 0 & 0 & 0 & 1\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 5 × 4 of type dbl\n",
       "\n",
       "| <!--/--> | 2times | 4times | drugD | drugE |\n",
       "|---|---|---|---|---|\n",
       "| 1time | 0 | 0 | 0 | 0 |\n",
       "| 2times | 1 | 0 | 0 | 0 |\n",
       "| 4times | 0 | 1 | 0 | 0 |\n",
       "| drugD | 0 | 0 | 1 | 0 |\n",
       "| drugE | 0 | 0 | 0 | 1 |\n",
       "\n"
      ],
      "text/plain": [
       "       2times 4times drugD drugE\n",
       "1time  0      0      0     0    \n",
       "2times 1      0      0     0    \n",
       "4times 0      1      0     0    \n",
       "drugD  0      0      1     0    \n",
       "drugE  0      0      0     1    "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "contrasts(df$trt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "d8798394-8024-4672-a895-ceffd0dd2b82",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\n",
       "Call:\n",
       "lm(formula = response ~ trt, data = df)\n",
       "\n",
       "Coefficients:\n",
       "(Intercept)         trt2         trt3         trt4         trt5  \n",
       "      5.782        3.443        6.593        9.579       15.166  \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "contrasts(df$trt) <- contr.treatment(5)\n",
    "fit.lm <- lm(response~trt,data=df)\n",
    "fit.lm "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "fb37dba4-d385-4372-8568-1d32aaf5c4f0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 5 × 4 of type dbl</caption>\n",
       "<thead>\n",
       "\t<tr><th></th><th scope=col>2</th><th scope=col>3</th><th scope=col>4</th><th scope=col>5</th></tr>\n",
       "</thead>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>1time</th><td>0</td><td>0</td><td>0</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>2times</th><td>1</td><td>0</td><td>0</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>4times</th><td>0</td><td>1</td><td>0</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>drugD</th><td>0</td><td>0</td><td>1</td><td>0</td></tr>\n",
       "\t<tr><th scope=row>drugE</th><td>0</td><td>0</td><td>0</td><td>1</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 5 × 4 of type dbl\n",
       "\\begin{tabular}{r|llll}\n",
       "  & 2 & 3 & 4 & 5\\\\\n",
       "\\hline\n",
       "\t1time & 0 & 0 & 0 & 0\\\\\n",
       "\t2times & 1 & 0 & 0 & 0\\\\\n",
       "\t4times & 0 & 1 & 0 & 0\\\\\n",
       "\tdrugD & 0 & 0 & 1 & 0\\\\\n",
       "\tdrugE & 0 & 0 & 0 & 1\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 5 × 4 of type dbl\n",
       "\n",
       "| <!--/--> | 2 | 3 | 4 | 5 |\n",
       "|---|---|---|---|---|\n",
       "| 1time | 0 | 0 | 0 | 0 |\n",
       "| 2times | 1 | 0 | 0 | 0 |\n",
       "| 4times | 0 | 1 | 0 | 0 |\n",
       "| drugD | 0 | 0 | 1 | 0 |\n",
       "| drugE | 0 | 0 | 0 | 1 |\n",
       "\n"
      ],
      "text/plain": [
       "       2 3 4 5\n",
       "1time  0 0 0 0\n",
       "2times 1 0 0 0\n",
       "4times 0 1 0 0\n",
       "drugD  0 0 1 0\n",
       "drugE  0 0 0 1"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "\n",
       "Call:\n",
       "lm(formula = response ~ trt, data = df)\n",
       "\n",
       "Coefficients:\n",
       "(Intercept)         trt2         trt3         trt4         trt5  \n",
       "      5.782        3.443        6.593        9.579       15.166  \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "contrasts(df$trt)\n",
    "fit.lm <- lm(response~trt,data=df)\n",
    "fit.lm "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a2c8572-341e-4263-a0b0-61a07f1ffad5",
   "metadata": {},
   "source": [
    "默认就是`contr.treatment`模式，括号里的就是列的数量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "c918672d-5e13-426c-93c8-f278f00139b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"dataframe\">\n",
       "<caption>A matrix: 5 × 4 of type dbl</caption>\n",
       "<tbody>\n",
       "\t<tr><th scope=row>1time</th><td>-1</td><td>-1</td><td>-1</td><td>-1</td></tr>\n",
       "\t<tr><th scope=row>2times</th><td> 1</td><td>-1</td><td>-1</td><td>-1</td></tr>\n",
       "\t<tr><th scope=row>4times</th><td> 0</td><td> 2</td><td>-1</td><td>-1</td></tr>\n",
       "\t<tr><th scope=row>drugD</th><td> 0</td><td> 0</td><td> 3</td><td>-1</td></tr>\n",
       "\t<tr><th scope=row>drugE</th><td> 0</td><td> 0</td><td> 0</td><td> 4</td></tr>\n",
       "</tbody>\n",
       "</table>\n"
      ],
      "text/latex": [
       "A matrix: 5 × 4 of type dbl\n",
       "\\begin{tabular}{r|llll}\n",
       "\t1time & -1 & -1 & -1 & -1\\\\\n",
       "\t2times &  1 & -1 & -1 & -1\\\\\n",
       "\t4times &  0 &  2 & -1 & -1\\\\\n",
       "\tdrugD &  0 &  0 &  3 & -1\\\\\n",
       "\tdrugE &  0 &  0 &  0 &  4\\\\\n",
       "\\end{tabular}\n"
      ],
      "text/markdown": [
       "\n",
       "A matrix: 5 × 4 of type dbl\n",
       "\n",
       "| 1time | -1 | -1 | -1 | -1 |\n",
       "| 2times |  1 | -1 | -1 | -1 |\n",
       "| 4times |  0 |  2 | -1 | -1 |\n",
       "| drugD |  0 |  0 |  3 | -1 |\n",
       "| drugE |  0 |  0 |  0 |  4 |\n",
       "\n"
      ],
      "text/plain": [
       "       [,1] [,2] [,3] [,4]\n",
       "1time  -1   -1   -1   -1  \n",
       "2times  1   -1   -1   -1  \n",
       "4times  0    2   -1   -1  \n",
       "drugD   0    0    3   -1  \n",
       "drugE   0    0    0    4  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "contrasts(df$trt) <- contr.helmert(5)\n",
    "contrasts(df$trt) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bd1ab2e7-d59f-48cd-bf84-3ed49f0f076f",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "R",
   "language": "R",
   "name": "ir"
  },
  "language_info": {
   "codemirror_mode": "r",
   "file_extension": ".r",
   "mimetype": "text/x-r-source",
   "name": "R",
   "pygments_lexer": "r",
   "version": "4.4.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
